Runtime schema by name

This commit is contained in:
Thomas Krijnen
2017-12-12 10:33:24 +01:00
parent 33e1fa6a14
commit 33fc2080df
13 changed files with 967 additions and 73 deletions
+478 -3
View File
@@ -24,8 +24,6 @@
* *
********************************************************************************/
#ifdef USE_IFC4
#include "../ifcparse/IfcSchema.h"
using namespace IfcParse;
@@ -11145,6 +11143,482 @@ schema_definition* populate_schema() {
derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
IfcZone_type->set_attributes(attributes, derived);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("IsActingUpon", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToActor_type, IfcRelAssignsToActor_type->attributes()[0]));
IfcActor_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasExternalReference", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
IfcActorRole_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("OfPerson", entity::inverse_attribute::set_type, 0, -1, IfcPerson_type, IfcPerson_type->attributes()[7]));
attributes.push_back(new entity::inverse_attribute("OfOrganization", entity::inverse_attribute::set_type, 0, -1, IfcOrganization_type, IfcOrganization_type->attributes()[4]));
IfcAddress_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ContainedInStructure", entity::inverse_attribute::set_type, 0, 1, IfcRelContainedInSpatialStructure_type, IfcRelContainedInSpatialStructure_type->attributes()[0]));
IfcAnnotation_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasExternalReference", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
IfcAppliedValue_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(5);
attributes.push_back(new entity::inverse_attribute("HasExternalReferences", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("ApprovedObjects", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesApproval_type, IfcRelAssociatesApproval_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("ApprovedResources", entity::inverse_attribute::set_type, 0, -1, IfcResourceApprovalRelationship_type, IfcResourceApprovalRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsRelatedWith", entity::inverse_attribute::set_type, 0, -1, IfcApprovalRelationship_type, IfcApprovalRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("Relates", entity::inverse_attribute::set_type, 0, -1, IfcApprovalRelationship_type, IfcApprovalRelationship_type->attributes()[0]));
IfcApproval_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("ClassificationForObjects", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesClassification_type, IfcRelAssociatesClassification_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasReferences", entity::inverse_attribute::set_type, 0, -1, IfcClassificationReference_type, IfcClassificationReference_type->attributes()[0]));
IfcClassification_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("ClassificationRefForObjects", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesClassification_type, IfcRelAssociatesClassification_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasReferences", entity::inverse_attribute::set_type, 0, -1, IfcClassificationReference_type, IfcClassificationReference_type->attributes()[0]));
IfcClassificationReference_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("UsingCurves", entity::inverse_attribute::set_type, 1, -1, IfcCompositeCurve_type, IfcCompositeCurve_type->attributes()[0]));
IfcCompositeCurveSegment_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasExternalReferences", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("PropertiesForConstraint", entity::inverse_attribute::set_type, 0, -1, IfcResourceConstraintRelationship_type, IfcResourceConstraintRelationship_type->attributes()[0]));
IfcConstraint_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("IsDefinedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelDefinesByProperties_type, IfcRelDefinesByProperties_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("Declares", entity::inverse_attribute::set_type, 0, -1, IfcRelDeclares_type, IfcRelDeclares_type->attributes()[0]));
IfcContext_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasExternalReference", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
IfcContextDependentUnit_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("Controls", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToControl_type, IfcRelAssignsToControl_type->attributes()[0]));
IfcControl_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasExternalReference", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
IfcConversionBasedUnit_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasCoordinateOperation", entity::inverse_attribute::set_type, 0, 1, IfcCoordinateOperation_type, IfcCoordinateOperation_type->attributes()[0]));
IfcCoordinateReferenceSystem_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("CoversSpaces", entity::inverse_attribute::set_type, 0, 1, IfcRelCoversSpaces_type, IfcRelCoversSpaces_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("CoversElements", entity::inverse_attribute::set_type, 0, 1, IfcRelCoversBldgElements_type, IfcRelCoversBldgElements_type->attributes()[1]));
IfcCovering_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("AssignedToFlowElement", entity::inverse_attribute::set_type, 0, 1, IfcRelFlowControlElements_type, IfcRelFlowControlElements_type->attributes()[0]));
IfcDistributionControlElement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasPorts", entity::inverse_attribute::set_type, 0, -1, IfcRelConnectsPortToElement_type, IfcRelConnectsPortToElement_type->attributes()[1]));
IfcDistributionElement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasControlElements", entity::inverse_attribute::set_type, 0, 1, IfcRelFlowControlElements_type, IfcRelFlowControlElements_type->attributes()[1]));
IfcDistributionFlowElement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(4);
attributes.push_back(new entity::inverse_attribute("DocumentInfoForObjects", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesDocument_type, IfcRelAssociatesDocument_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasDocumentReferences", entity::inverse_attribute::set_type, 0, -1, IfcDocumentReference_type, IfcDocumentReference_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsPointedTo", entity::inverse_attribute::set_type, 0, -1, IfcDocumentInformationRelationship_type, IfcDocumentInformationRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsPointer", entity::inverse_attribute::set_type, 0, 1, IfcDocumentInformationRelationship_type, IfcDocumentInformationRelationship_type->attributes()[0]));
IfcDocumentInformation_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("DocumentRefForObjects", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesDocument_type, IfcRelAssociatesDocument_type->attributes()[0]));
IfcDocumentReference_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(12);
attributes.push_back(new entity::inverse_attribute("FillsVoids", entity::inverse_attribute::set_type, 0, 1, IfcRelFillsElement_type, IfcRelFillsElement_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("ConnectedTo", entity::inverse_attribute::set_type, 0, -1, IfcRelConnectsElements_type, IfcRelConnectsElements_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsInterferedByElements", entity::inverse_attribute::set_type, 0, -1, IfcRelInterferesElements_type, IfcRelInterferesElements_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("InterferesElements", entity::inverse_attribute::set_type, 0, -1, IfcRelInterferesElements_type, IfcRelInterferesElements_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasProjections", entity::inverse_attribute::set_type, 0, -1, IfcRelProjectsElement_type, IfcRelProjectsElement_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("ReferencedInStructures", entity::inverse_attribute::set_type, 0, -1, IfcRelReferencedInSpatialStructure_type, IfcRelReferencedInSpatialStructure_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasOpenings", entity::inverse_attribute::set_type, 0, -1, IfcRelVoidsElement_type, IfcRelVoidsElement_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("IsConnectionRealization", entity::inverse_attribute::set_type, 0, -1, IfcRelConnectsWithRealizingElements_type, IfcRelConnectsWithRealizingElements_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("ProvidesBoundaries", entity::inverse_attribute::set_type, 0, -1, IfcRelSpaceBoundary_type, IfcRelSpaceBoundary_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("ConnectedFrom", entity::inverse_attribute::set_type, 0, -1, IfcRelConnectsElements_type, IfcRelConnectsElements_type->attributes()[2]));
attributes.push_back(new entity::inverse_attribute("ContainedInStructure", entity::inverse_attribute::set_type, 0, 1, IfcRelContainedInSpatialStructure_type, IfcRelContainedInSpatialStructure_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasCoverings", entity::inverse_attribute::set_type, 0, -1, IfcRelCoversBldgElements_type, IfcRelCoversBldgElements_type->attributes()[0]));
IfcElement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ExternalReferenceForResources", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[0]));
IfcExternalReference_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("BoundedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelSpaceBoundary_type, IfcRelSpaceBoundary_type->attributes()[0]));
IfcExternalSpatialElement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasTextureMaps", entity::inverse_attribute::set_type, 0, -1, IfcTextureMap_type, IfcTextureMap_type->attributes()[1]));
IfcFace_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ProjectsElements", entity::inverse_attribute::unspecified_type, -1, -1, IfcRelProjectsElement_type, IfcRelProjectsElement_type->attributes()[1]));
IfcFeatureElementAddition_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("VoidsElements", entity::inverse_attribute::unspecified_type, -1, -1, IfcRelVoidsElement_type, IfcRelVoidsElement_type->attributes()[1]));
IfcFeatureElementSubtraction_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasSubContexts", entity::inverse_attribute::set_type, 0, -1, IfcGeometricRepresentationSubContext_type, IfcGeometricRepresentationSubContext_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasCoordinateOperation", entity::inverse_attribute::set_type, 0, 1, IfcCoordinateOperation_type, IfcCoordinateOperation_type->attributes()[0]));
IfcGeometricRepresentationContext_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ContainedInStructure", entity::inverse_attribute::set_type, 0, 1, IfcRelContainedInSpatialStructure_type, IfcRelContainedInSpatialStructure_type->attributes()[0]));
IfcGrid_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(4);
attributes.push_back(new entity::inverse_attribute("PartOfW", entity::inverse_attribute::set_type, 0, 1, IfcGrid_type, IfcGrid_type->attributes()[2]));
attributes.push_back(new entity::inverse_attribute("PartOfV", entity::inverse_attribute::set_type, 0, 1, IfcGrid_type, IfcGrid_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("PartOfU", entity::inverse_attribute::set_type, 0, 1, IfcGrid_type, IfcGrid_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasIntersections", entity::inverse_attribute::set_type, 0, -1, IfcVirtualGridIntersection_type, IfcVirtualGridIntersection_type->attributes()[0]));
IfcGridAxis_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("IsGroupedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToGroup_type, IfcRelAssignsToGroup_type->attributes()[0]));
IfcGroup_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("LibraryInfoForObjects", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesLibrary_type, IfcRelAssociatesLibrary_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasLibraryReferences", entity::inverse_attribute::set_type, 0, -1, IfcLibraryReference_type, IfcLibraryReference_type->attributes()[2]));
IfcLibraryInformation_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("LibraryRefForObjects", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesLibrary_type, IfcRelAssociatesLibrary_type->attributes()[0]));
IfcLibraryReference_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("HasRepresentation", entity::inverse_attribute::set_type, 0, 1, IfcMaterialDefinitionRepresentation_type, IfcMaterialDefinitionRepresentation_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("IsRelatedWith", entity::inverse_attribute::set_type, 0, -1, IfcMaterialRelationship_type, IfcMaterialRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("RelatesTo", entity::inverse_attribute::set_type, 0, 1, IfcMaterialRelationship_type, IfcMaterialRelationship_type->attributes()[0]));
IfcMaterial_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ToMaterialConstituentSet", entity::inverse_attribute::unspecified_type, -1, -1, IfcMaterialConstituentSet_type, IfcMaterialConstituentSet_type->attributes()[2]));
IfcMaterialConstituent_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("AssociatedTo", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociatesMaterial_type, IfcRelAssociatesMaterial_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasExternalReferences", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("HasProperties", entity::inverse_attribute::set_type, 0, -1, IfcMaterialProperties_type, IfcMaterialProperties_type->attributes()[0]));
IfcMaterialDefinition_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ToMaterialLayerSet", entity::inverse_attribute::unspecified_type, -1, -1, IfcMaterialLayerSet_type, IfcMaterialLayerSet_type->attributes()[0]));
IfcMaterialLayer_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ToMaterialProfileSet", entity::inverse_attribute::unspecified_type, -1, -1, IfcMaterialProfileSet_type, IfcMaterialProfileSet_type->attributes()[2]));
IfcMaterialProfile_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("AssociatedTo", entity::inverse_attribute::set_type, 1, -1, IfcRelAssociatesMaterial_type, IfcRelAssociatesMaterial_type->attributes()[0]));
IfcMaterialUsageDefinition_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(4);
attributes.push_back(new entity::inverse_attribute("IsDeclaredBy", entity::inverse_attribute::set_type, 0, 1, IfcRelDefinesByObject_type, IfcRelDefinesByObject_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("Declares", entity::inverse_attribute::set_type, 0, -1, IfcRelDefinesByObject_type, IfcRelDefinesByObject_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsTypedBy", entity::inverse_attribute::set_type, 0, 1, IfcRelDefinesByType_type, IfcRelDefinesByType_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("IsDefinedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelDefinesByProperties_type, IfcRelDefinesByProperties_type->attributes()[0]));
IfcObject_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(7);
attributes.push_back(new entity::inverse_attribute("HasAssignments", entity::inverse_attribute::set_type, 0, -1, IfcRelAssigns_type, IfcRelAssigns_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("Nests", entity::inverse_attribute::set_type, 0, 1, IfcRelNests_type, IfcRelNests_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsNestedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelNests_type, IfcRelNests_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasContext", entity::inverse_attribute::set_type, 0, 1, IfcRelDeclares_type, IfcRelDeclares_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsDecomposedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelAggregates_type, IfcRelAggregates_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("Decomposes", entity::inverse_attribute::set_type, 0, 1, IfcRelAggregates_type, IfcRelAggregates_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("HasAssociations", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociates_type, IfcRelAssociates_type->attributes()[0]));
IfcObjectDefinition_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("PlacesObject", entity::inverse_attribute::set_type, 0, -1, IfcProduct_type, IfcProduct_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("ReferencedByPlacements", entity::inverse_attribute::set_type, 0, -1, IfcLocalPlacement_type, IfcLocalPlacement_type->attributes()[0]));
IfcObjectPlacement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasFillings", entity::inverse_attribute::set_type, 0, -1, IfcRelFillsElement_type, IfcRelFillsElement_type->attributes()[0]));
IfcOpeningElement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("IsRelatedBy", entity::inverse_attribute::set_type, 0, -1, IfcOrganizationRelationship_type, IfcOrganizationRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("Relates", entity::inverse_attribute::set_type, 0, -1, IfcOrganizationRelationship_type, IfcOrganizationRelationship_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("Engages", entity::inverse_attribute::set_type, 0, -1, IfcPersonAndOrganization_type, IfcPersonAndOrganization_type->attributes()[1]));
IfcOrganization_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("EngagedIn", entity::inverse_attribute::set_type, 0, -1, IfcPersonAndOrganization_type, IfcPersonAndOrganization_type->attributes()[0]));
IfcPerson_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasExternalReferences", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("PartOfComplex", entity::inverse_attribute::set_type, 0, 1, IfcPhysicalComplexQuantity_type, IfcPhysicalComplexQuantity_type->attributes()[0]));
IfcPhysicalQuantity_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("ContainedIn", entity::inverse_attribute::set_type, 0, 1, IfcRelConnectsPortToElement_type, IfcRelConnectsPortToElement_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("ConnectedFrom", entity::inverse_attribute::set_type, 0, 1, IfcRelConnectsPorts_type, IfcRelConnectsPorts_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("ConnectedTo", entity::inverse_attribute::set_type, 0, 1, IfcRelConnectsPorts_type, IfcRelConnectsPorts_type->attributes()[0]));
IfcPort_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("IsPredecessorTo", entity::inverse_attribute::set_type, 0, -1, IfcRelSequence_type, IfcRelSequence_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("IsSuccessorFrom", entity::inverse_attribute::set_type, 0, -1, IfcRelSequence_type, IfcRelSequence_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("OperatesOn", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToProcess_type, IfcRelAssignsToProcess_type->attributes()[0]));
IfcProcess_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ReferencedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToProduct_type, IfcRelAssignsToProduct_type->attributes()[0]));
IfcProduct_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("ShapeOfProduct", entity::inverse_attribute::set_type, 1, -1, IfcProduct_type, IfcProduct_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("HasShapeAspects", entity::inverse_attribute::set_type, 0, -1, IfcShapeAspect_type, IfcShapeAspect_type->attributes()[4]));
IfcProductDefinitionShape_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasExternalReference", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("HasProperties", entity::inverse_attribute::set_type, 0, -1, IfcProfileProperties_type, IfcProfileProperties_type->attributes()[0]));
IfcProfileDef_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(6);
attributes.push_back(new entity::inverse_attribute("PartOfPset", entity::inverse_attribute::set_type, 0, -1, IfcPropertySet_type, IfcPropertySet_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("PropertyForDependance", entity::inverse_attribute::set_type, 0, -1, IfcPropertyDependencyRelationship_type, IfcPropertyDependencyRelationship_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("PropertyDependsOn", entity::inverse_attribute::set_type, 0, -1, IfcPropertyDependencyRelationship_type, IfcPropertyDependencyRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("PartOfComplex", entity::inverse_attribute::set_type, 0, -1, IfcComplexProperty_type, IfcComplexProperty_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("HasConstraints", entity::inverse_attribute::set_type, 0, -1, IfcResourceConstraintRelationship_type, IfcResourceConstraintRelationship_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("HasApprovals", entity::inverse_attribute::set_type, 0, -1, IfcResourceApprovalRelationship_type, IfcResourceApprovalRelationship_type->attributes()[0]));
IfcProperty_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasExternalReferences", entity::inverse_attribute::set_type, 0, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
IfcPropertyAbstraction_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasContext", entity::inverse_attribute::set_type, 0, 1, IfcRelDeclares_type, IfcRelDeclares_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("HasAssociations", entity::inverse_attribute::set_type, 0, -1, IfcRelAssociates_type, IfcRelAssociates_type->attributes()[0]));
IfcPropertyDefinition_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("DefinesType", entity::inverse_attribute::set_type, 0, -1, IfcTypeObject_type, IfcTypeObject_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("IsDefinedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelDefinesByTemplate_type, IfcRelDefinesByTemplate_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("DefinesOccurrence", entity::inverse_attribute::set_type, 0, -1, IfcRelDefinesByProperties_type, IfcRelDefinesByProperties_type->attributes()[1]));
IfcPropertySetDefinition_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("Defines", entity::inverse_attribute::set_type, 0, -1, IfcRelDefinesByTemplate_type, IfcRelDefinesByTemplate_type->attributes()[1]));
IfcPropertySetTemplate_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("PartOfComplexTemplate", entity::inverse_attribute::set_type, 0, -1, IfcComplexPropertyTemplate_type, IfcComplexPropertyTemplate_type->attributes()[2]));
attributes.push_back(new entity::inverse_attribute("PartOfPsetTemplate", entity::inverse_attribute::set_type, 0, -1, IfcPropertySetTemplate_type, IfcPropertySetTemplate_type->attributes()[2]));
IfcPropertyTemplate_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("InnerBoundaries", entity::inverse_attribute::set_type, 0, -1, IfcRelSpaceBoundary1stLevel_type, IfcRelSpaceBoundary1stLevel_type->attributes()[0]));
IfcRelSpaceBoundary1stLevel_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("Corresponds", entity::inverse_attribute::set_type, 0, 1, IfcRelSpaceBoundary2ndLevel_type, IfcRelSpaceBoundary2ndLevel_type->attributes()[0]));
IfcRelSpaceBoundary2ndLevel_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("RepresentationMap", entity::inverse_attribute::set_type, 0, 1, IfcRepresentationMap_type, IfcRepresentationMap_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("LayerAssignments", entity::inverse_attribute::set_type, 0, -1, IfcPresentationLayerAssignment_type, IfcPresentationLayerAssignment_type->attributes()[2]));
attributes.push_back(new entity::inverse_attribute("OfProductRepresentation", entity::inverse_attribute::set_type, 0, -1, IfcProductRepresentation_type, IfcProductRepresentation_type->attributes()[2]));
IfcRepresentation_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("RepresentationsInContext", entity::inverse_attribute::set_type, 0, -1, IfcRepresentation_type, IfcRepresentation_type->attributes()[0]));
IfcRepresentationContext_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("LayerAssignment", entity::inverse_attribute::set_type, 0, 1, IfcPresentationLayerAssignment_type, IfcPresentationLayerAssignment_type->attributes()[2]));
attributes.push_back(new entity::inverse_attribute("StyledByItem", entity::inverse_attribute::set_type, 0, 1, IfcStyledItem_type, IfcStyledItem_type->attributes()[0]));
IfcRepresentationItem_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasShapeAspects", entity::inverse_attribute::set_type, 0, -1, IfcShapeAspect_type, IfcShapeAspect_type->attributes()[4]));
attributes.push_back(new entity::inverse_attribute("MapUsage", entity::inverse_attribute::set_type, 0, -1, IfcMappedItem_type, IfcMappedItem_type->attributes()[0]));
IfcRepresentationMap_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ResourceOf", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToResource_type, IfcRelAssignsToResource_type->attributes()[0]));
IfcResource_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("OfShapeAspect", entity::inverse_attribute::set_type, 0, 1, IfcShapeAspect_type, IfcShapeAspect_type->attributes()[0]));
IfcShapeModel_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasCoverings", entity::inverse_attribute::set_type, 0, -1, IfcRelCoversSpaces_type, IfcRelCoversSpaces_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("BoundedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelSpaceBoundary_type, IfcRelSpaceBoundary_type->attributes()[0]));
IfcSpace_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(3);
attributes.push_back(new entity::inverse_attribute("ContainsElements", entity::inverse_attribute::set_type, 0, -1, IfcRelContainedInSpatialStructure_type, IfcRelContainedInSpatialStructure_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("ServicedBySystems", entity::inverse_attribute::set_type, 0, -1, IfcRelServicesBuildings_type, IfcRelServicesBuildings_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("ReferencesElements", entity::inverse_attribute::set_type, 0, -1, IfcRelReferencedInSpatialStructure_type, IfcRelReferencedInSpatialStructure_type->attributes()[1]));
IfcSpatialElement_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("AssignedToStructuralItem", entity::inverse_attribute::set_type, 0, 1, IfcRelConnectsStructuralActivity_type, IfcRelConnectsStructuralActivity_type->attributes()[1]));
IfcStructuralActivity_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ConnectsStructuralMembers", entity::inverse_attribute::set_type, 1, -1, IfcRelConnectsStructuralMember_type, IfcRelConnectsStructuralMember_type->attributes()[1]));
IfcStructuralConnection_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("AssignedStructuralActivity", entity::inverse_attribute::set_type, 0, -1, IfcRelConnectsStructuralActivity_type, IfcRelConnectsStructuralActivity_type->attributes()[0]));
IfcStructuralItem_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("SourceOfResultGroup", entity::inverse_attribute::set_type, 0, 1, IfcStructuralResultGroup_type, IfcStructuralResultGroup_type->attributes()[1]));
attributes.push_back(new entity::inverse_attribute("LoadGroupFor", entity::inverse_attribute::set_type, 0, -1, IfcStructuralAnalysisModel_type, IfcStructuralAnalysisModel_type->attributes()[2]));
IfcStructuralLoadGroup_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ConnectedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelConnectsStructuralMember_type, IfcRelConnectsStructuralMember_type->attributes()[0]));
IfcStructuralMember_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ResultGroupFor", entity::inverse_attribute::set_type, 0, 1, IfcStructuralAnalysisModel_type, IfcStructuralAnalysisModel_type->attributes()[3]));
IfcStructuralResultGroup_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("IsMappedBy", entity::inverse_attribute::set_type, 0, -1, IfcTextureCoordinate_type, IfcTextureCoordinate_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("UsedInStyles", entity::inverse_attribute::set_type, 0, -1, IfcSurfaceStyleWithTextures_type, IfcSurfaceStyleWithTextures_type->attributes()[0]));
IfcSurfaceTexture_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ServicesBuildings", entity::inverse_attribute::set_type, 0, 1, IfcRelServicesBuildings_type, IfcRelServicesBuildings_type->attributes()[0]));
IfcSystem_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(2);
attributes.push_back(new entity::inverse_attribute("HasColours", entity::inverse_attribute::set_type, 0, 1, IfcIndexedColourMap_type, IfcIndexedColourMap_type->attributes()[0]));
attributes.push_back(new entity::inverse_attribute("HasTextures", entity::inverse_attribute::set_type, 0, -1, IfcIndexedTextureMap_type, IfcIndexedTextureMap_type->attributes()[0]));
IfcTessellatedFaceSet_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("HasExternalReference", entity::inverse_attribute::set_type, 1, -1, IfcExternalReferenceRelationship_type, IfcExternalReferenceRelationship_type->attributes()[1]));
IfcTimeSeries_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("Types", entity::inverse_attribute::set_type, 0, 1, IfcRelDefinesByType_type, IfcRelDefinesByType_type->attributes()[1]));
IfcTypeObject_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("OperatesOn", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToProcess_type, IfcRelAssignsToProcess_type->attributes()[0]));
IfcTypeProcess_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ReferencedBy", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToProduct_type, IfcRelAssignsToProduct_type->attributes()[0]));
IfcTypeProduct_type->set_inverse_attributes(attributes);
}
{
std::vector<const entity::inverse_attribute*> attributes; attributes.reserve(1);
attributes.push_back(new entity::inverse_attribute("ResourceOf", entity::inverse_attribute::set_type, 0, -1, IfcRelAssignsToResource_type, IfcRelAssignsToResource_type->attributes()[0]));
IfcTypeResource_type->set_inverse_attributes(attributes);
}
std::vector<const declaration*> declarations; declarations.reserve(1165);
declarations.push_back(IfcAbsorbedDoseMeasure_type);
@@ -12320,10 +12794,11 @@ schema_definition* populate_schema() {
#pragma optimize("", on)
#endif
namespace IFC4 {
const schema_definition& get_schema() {
static const schema_definition* s = populate_schema();
return *s;
}
}
#endif