diff --git a/src/ifcexpressparser/IfcExpressParser.py b/src/ifcexpressparser/IfcExpressParser.py index 85c96d73e8..e577585f38 100644 --- a/src/ifcexpressparser/IfcExpressParser.py +++ b/src/ifcexpressparser/IfcExpressParser.py @@ -28,7 +28,7 @@ header = """ # # # Note this script uses funcparserlib, which is available at: # # http://code.google.com/p/funcparserlib/ # -# The script only works with revision e1df5066addd because it uses the some() # +# The script only works with revision 30f7ee896bc9 because it uses the some() # # parser and is incompatible with other changes as well. # # # ############################################################################### @@ -95,7 +95,7 @@ schema_version = '' enumerations = set() selections = set() entity_names = set() -simple_types = set() +simple_types = {} selectable_simple_types = set() argument_count = {} parent_relations = {} @@ -127,9 +127,36 @@ class ArrayType: return "SHARED_PTR< IfcTemplatedEntityList >" else: return "std::vector<%(type)s> /*[%(lower)s:%(upper)s]*/"%self.__dict__ + def type_enum(self): + if self.type in simple_types: + t = simple_types[self.type].type_enum() + else: + t = self.type + if t in entity_names or t == "ENTITY": + return "ENTITY_LIST" + elif t in selections: + return "ENTITY_LIST" + elif t == "int": + return "VECTOR_INT" + elif t == "double" or t == "DOUBLE": + return "VECTOR_DOUBLE" + elif t == "std::string" or t == "STRING": + return "VECTOR_STRING" + elif isinstance(t, BinaryType): + return "UNKNOWN" + else: + assert False, t + class ScalarType: def __init__(self,l): self.type = express_to_cpp.get(l,l) def __str__(self): return self.type + def type_enum(self): + if self.type in simple_types: + return simple_types[self.type].type_enum() + elif self.type in entity_names: + return "ENTITY" + else: + return { "bool":"BOOL","int":"INT","double":"DOUBLE","std::string":"STRING"}[self.type] class EnumType: def __init__(self,l): self.v = [(x,'%s_%s'%('%(fancy_name)s',x)) for x in l] @@ -142,17 +169,22 @@ class EnumType: elif generator_mode == 'SOURCE_FROM': return "".join([' if(s=="%s"%s) return %s::%s;\n'%(v1.upper()," "*(self.maxlen-len(v1)),"%(name)s",v2) for v1,v2 in self.v]) def __len__(self): return len(self.v) + def type_enum(self): + return "ENUMERATION" class SelectType: def __init__(self,l): for x in l: if x in simple_types: selectable_simple_types.add(x) def __str__(self): return "IfcSchemaEntity" + def type_enum(self): return "ENTITY" class BinaryType: def __init__(self,l): self.l = int(l) def __str__(self): return "char[%s]"%self.l + def type_enum(self): raise NotImplementedError() class InverseType: def __init__(self,l): self.name, self.type, self.reference = l + def type_enum(self): return "ENTITY" class Typedef: def __init__(self,l): self.name,self.type=l[1:3] @@ -161,7 +193,7 @@ class Typedef: enumerations.add(self.name) self.len = len(self.type) elif isinstance(self.type,SelectType): selections.add(self.name) - simple_types.add(self.name) + simple_types[self.name] = self comment = IfcDocumentation.description(self.name) self.comment = comment+"\n" if comment else '' def __str__(self): @@ -177,6 +209,8 @@ class Typedef: s += ("%(name)s::%(name)s %(name)s::FromString(const std::string& s) {\n%(type)s throw IfcException(\"Unable to find find keyword in schema\");\n}"%self.__dict__)%self.__dict__ generator_mode = 'SOURCE' return s + def type_enum(self): + return self.type.type_enum() class Argument(object): def __init__(self,l): self.name, self.optional, self.type = l @@ -220,6 +254,33 @@ class ArgumentList: return_type = "%(type)s*"%a.__dict__ s += "\n%s%s%s %s%s()%s"%(comment,indent,return_type,class_name,a.name,function_body) argv += 1 + + if generator_mode == 'HEADER': + s += "\n virtual unsigned int getArgumentCount() const { return %(n_arguments)d; }" % dict(class_name=self.class_name, n_arguments=len(self.l) + argument_start(self.class_name)) + + s += "\n virtual ArgumentType getArgumentType(unsigned int i) const {" + s += " switch (i) {" + for i, a in enumerate(self.l): + s += "case %d: " % (i + argument_start(self.class_name)) + s += "return %s; " % a.type.type_enum() + s += "}" + if self.parent_class is not None: + s += " return %s::getArgumentType(i); }" % self.parent_class + else: + s += " throw IfcException(\"argument out of range\"); }" + + s += "\n virtual const char* getArgumentName(unsigned int i) const {" + s += " switch (i) {" + for i, a in enumerate(self.l): + s += "case %d: " % (i + argument_start(self.class_name)) + s += "return \"%s\"; " % a.name + s += "}" + if self.parent_class is not None: + s += " return %s::getArgumentName(i); }" % self.parent_class + else: + s += " throw IfcException(\"argument out of range\"); }" + + s += "\n virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); }" return s class InverseList: def __init__(self,l): @@ -237,6 +298,7 @@ class Classdef: def __init__(self,l): self.class_name, self.parent_class, self.arguments, self.inverse = l self.arguments.class_name = self.class_name + self.arguments.parent_class = self.parent_class entity_names.add(self.class_name) parent_relations[self.class_name] = self.parent_class argument_count[self.class_name] = len(self.arguments) @@ -245,7 +307,7 @@ class Classdef: comment = IfcDocumentation.description(self.class_name) comment = comment+"\n" if comment else '' return "%sclass %s : public %s {\npublic:%s%s%s\n};" % (comment,self.class_name, - "IfcBaseClass" if self.parent_class is None else self.parent_class, + "IfcBaseEntity" if self.parent_class is None else self.parent_class, self.arguments, self.inverse, ("\n bool is(Type::Enum v) const;"+ @@ -354,9 +416,11 @@ print >>h_file, """#ifndef %(schema_upper)s_H #include #include "../ifcparse/IfcUtil.h" +#include "../ifcparse/IfcException.h" #include "../ifcparse/%(schema)senum.h" using namespace IfcUtil; +using IfcParse::IfcException; #define RETURN_INVERSE(T) \\ IfcEntities e = entity->getInverse(T::Class()); \\ @@ -488,4 +552,4 @@ print >>cpp_file, "}" for t in [T for T in types if isinstance(T.type,EnumType)]: print >>cpp_file, t -for e in entities: print >>cpp_file, e, \ No newline at end of file +for e in entities: print >>cpp_file, e, diff --git a/src/ifcparse/Ifc2x3.cpp b/src/ifcparse/Ifc2x3.cpp index ad03caf7df..96da49fc02 100644 --- a/src/ifcparse/Ifc2x3.cpp +++ b/src/ifcparse/Ifc2x3.cpp @@ -19,7 +19,7 @@ /******************************************************************************** * * - * This file has been generated from IFC2X3_TC1.exp. Do not make modifications * + * This file has been generated from /tmp/IFC2X3_FINAL.exp. Do not make modifications * * but instead modify the python script that has been used to generate this. * * * ********************************************************************************/ @@ -6283,11 +6283,11 @@ IfcElectricalElement::IfcElectricalElement(IfcAbstractEntityPtr e) { if (!is(Typ // Function implementations for IfcElement bool IfcElement::hasTag() { return !entity->getArgument(7)->isNull(); } IfcIdentifier IfcElement::Tag() { return *entity->getArgument(7); } -IfcRelConnectsStructuralElement::list IfcElement::HasStructuralMember() { RETURN_INVERSE(IfcRelConnectsStructuralElement) } IfcRelFillsElement::list IfcElement::FillsVoids() { RETURN_INVERSE(IfcRelFillsElement) } IfcRelConnectsElements::list IfcElement::ConnectedTo() { RETURN_INVERSE(IfcRelConnectsElements) } IfcRelCoversBldgElements::list IfcElement::HasCoverings() { RETURN_INVERSE(IfcRelCoversBldgElements) } IfcRelProjectsElement::list IfcElement::HasProjections() { RETURN_INVERSE(IfcRelProjectsElement) } +IfcRelConnectsStructuralElement::list IfcElement::HasStructuralMember() { RETURN_INVERSE(IfcRelConnectsStructuralElement) } IfcRelReferencedInSpatialStructure::list IfcElement::ReferencedInStructures() { RETURN_INVERSE(IfcRelReferencedInSpatialStructure) } IfcRelConnectsPortToElement::list IfcElement::HasPorts() { RETURN_INVERSE(IfcRelConnectsPortToElement) } IfcRelVoidsElement::list IfcElement::HasOpenings() { RETURN_INVERSE(IfcRelVoidsElement) } @@ -9071,7 +9071,7 @@ IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum IfcStructuralLoadGroup::PredefinedTyp IfcActionTypeEnum::IfcActionTypeEnum IfcStructuralLoadGroup::ActionType() { return IfcActionTypeEnum::FromString(*entity->getArgument(6)); } IfcActionSourceTypeEnum::IfcActionSourceTypeEnum IfcStructuralLoadGroup::ActionSource() { return IfcActionSourceTypeEnum::FromString(*entity->getArgument(7)); } bool IfcStructuralLoadGroup::hasCoefficient() { return !entity->getArgument(8)->isNull(); } -IfcRatioMeasure IfcStructuralLoadGroup::Coefficient() { return *entity->getArgument(8); } +IfcPositiveRatioMeasure IfcStructuralLoadGroup::Coefficient() { return *entity->getArgument(8); } bool IfcStructuralLoadGroup::hasPurpose() { return !entity->getArgument(9)->isNull(); } IfcLabel IfcStructuralLoadGroup::Purpose() { return *entity->getArgument(9); } IfcStructuralResultGroup::list IfcStructuralLoadGroup::SourceOfResultGroup() { RETURN_INVERSE(IfcStructuralResultGroup) } diff --git a/src/ifcparse/Ifc2x3.h b/src/ifcparse/Ifc2x3.h index 4c564b7a55..8a537392b6 100644 --- a/src/ifcparse/Ifc2x3.h +++ b/src/ifcparse/Ifc2x3.h @@ -19,7 +19,7 @@ /******************************************************************************** * * - * This file has been generated from IFC2X3_TC1.exp. Do not make modifications * + * This file has been generated from /tmp/IFC2X3_FINAL.exp. Do not make modifications * * but instead modify the python script that has been used to generate this. * * * ********************************************************************************/ @@ -32,9 +32,11 @@ #include #include "../ifcparse/IfcUtil.h" +#include "../ifcparse/IfcException.h" #include "../ifcparse/Ifc2x3enum.h" using namespace IfcUtil; +using IfcParse::IfcException; #define RETURN_INVERSE(T) \ IfcEntities e = entity->getInverse(T::Class()); \ @@ -158,7 +160,7 @@ typedef std::vector /*[1:2]*/ IfcComplexNumber; ///      + 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. -typedef std::vector /*[3:4]*/ IfcCompoundPlaneAngleMeasure; +typedef std::vector /*[3:3]*/ IfcCompoundPlaneAngleMeasure; /// Definition from ISO/CD 10303-41:1992: Is the value of a physical quantity as defined by an application context. /// Type: REAL /// @@ -5383,7 +5385,7 @@ class Ifc2DCompositeCurve; class IfcActionRequest; class IfcActor; class IfcActo /// Corresponds to the following entity in ISO-10303-41: organization_role and person_role. /// /// HISTORY New entity in IFC Release 1.5.1 -class IfcActorRole : public IfcBaseClass { +class IfcActorRole : public IfcBaseEntity { public: /// 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. @@ -5399,6 +5401,10 @@ public: bool hasDescription(); /// A textual description relating the nature of the role played by an actor. IfcText Description(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; case 1: return STRING; case 2: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Role"; case 1: return "UserDefinedRole"; case 2: return "Description"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5412,7 +5418,7 @@ public: /// NOTE Corresponds to the following entity in ISO-10303-41: address. /// /// HISTORY New entity in IFC Release 1.5.1. -class IfcAddress : public IfcBaseClass { +class IfcAddress : public IfcBaseEntity { public: /// Whether the optional attribute Purpose is defined for this IfcAddress bool hasPurpose(); @@ -5429,6 +5435,10 @@ public: /// When a value is provided for attribute UserDefinedPurpose, in parallel the /// attribute Purpose shall have enumeration value USERDEFINED. IfcLabel UserDefinedPurpose(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; case 1: return STRING; case 2: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Purpose"; case 1: return "Description"; case 2: return "UserDefinedPurpose"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > OfPerson(); // INVERSE IfcPerson::Addresses SHARED_PTR< IfcTemplatedEntityList > OfOrganization(); // INVERSE IfcOrganization::Addresses bool is(Type::Enum v) const; @@ -5442,7 +5452,7 @@ public: /// 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 IfcApplication : public IfcBaseClass { +class IfcApplication : public IfcBaseEntity { public: /// Name of the application developer, being requested to be member of the IAI. IfcOrganization* ApplicationDeveloper(); @@ -5452,6 +5462,10 @@ public: IfcLabel ApplicationFullName(); /// Short identifying name for the application. IfcIdentifier ApplicationIdentifier(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return STRING; case 2: return STRING; case 3: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ApplicationDeveloper"; case 1: return "Version"; case 2: return "ApplicationFullName"; case 3: return "ApplicationIdentifier"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5474,7 +5488,7 @@ 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 IfcAppliedValue : public IfcBaseClass { +class IfcAppliedValue : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcAppliedValue bool hasName(); @@ -5508,6 +5522,10 @@ public: /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. IfcDateTimeSelect FixedUntilDate(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return ENTITY; case 4: return ENTITY; case 5: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "AppliedValue"; case 3: return "UnitBasis"; case 4: return "ApplicableDate"; case 5: return "FixedUntilDate"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ValuesReferenced(); // INVERSE IfcReferencesValueDocument::ReferencingValues SHARED_PTR< IfcTemplatedEntityList > ValueOfComponents(); // INVERSE IfcAppliedValueRelationship::ComponentOfTotal SHARED_PTR< IfcTemplatedEntityList > IsComponentIn(); // INVERSE IfcAppliedValueRelationship::Components @@ -5543,7 +5561,7 @@ public: /// Figure 240 illustrates two level aggregation of applied values. It is possible to develop more complex applied value specifications by creating hierarchies of applied value relationships. In the diagram, the development of a applied value is shown whereby, because B = E * F and D = G * H * J, then: A = ((E * F) + C + (G * H * J)). /// /// Figure 240 — Applied value relationship multiple level -class IfcAppliedValueRelationship : public IfcBaseClass { +class IfcAppliedValueRelationship : public IfcBaseEntity { public: /// The applied value (total or subtotal) of which the value being considered is a component. IfcAppliedValue* ComponentOfTotal(); @@ -5557,6 +5575,10 @@ public: /// Whether the optional attribute Description is defined for this IfcAppliedValueRelationship bool hasDescription(); IfcText Description(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return ENUMERATION; case 3: return STRING; case 4: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ComponentOfTotal"; case 1: return "Components"; case 2: return "ArithmeticOperator"; case 3: return "Name"; case 4: return "Description"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5570,7 +5592,7 @@ public: /// 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 IfcApproval : public IfcBaseClass { +class IfcApproval : public IfcBaseEntity { public: /// Whether the optional attribute Description is defined for this IfcApproval bool hasDescription(); @@ -5590,6 +5612,10 @@ public: IfcLabel Name(); /// A computer interpretable identifier by which the approval is known. IfcIdentifier Identifier(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY; case 2: return STRING; case 3: return STRING; case 4: return STRING; case 5: return STRING; case 6: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Description"; case 1: return "ApprovalDateTime"; case 2: return "ApprovalStatus"; case 3: return "ApprovalLevel"; case 4: return "ApprovalQualifier"; case 5: return "Name"; case 6: return "Identifier"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > Actors(); // INVERSE IfcApprovalActorRelationship::Approval SHARED_PTR< IfcTemplatedEntityList > IsRelatedWith(); // INVERSE IfcApprovalRelationship::RelatedApproval SHARED_PTR< IfcTemplatedEntityList > Relates(); // INVERSE IfcApprovalRelationship::RelatingApproval @@ -5601,11 +5627,15 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcApprovalActorRelationship : public IfcBaseClass { +class IfcApprovalActorRelationship : public IfcBaseEntity { public: IfcActorSelect Actor(); IfcApproval* Approval(); IfcActorRole* Role(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Actor"; case 1: return "Approval"; case 2: return "Role"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5614,10 +5644,14 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcApprovalPropertyRelationship : public IfcBaseClass { +class IfcApprovalPropertyRelationship : public IfcBaseEntity { public: SHARED_PTR< IfcTemplatedEntityList > ApprovedProperties(); IfcApproval* Approval(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ApprovedProperties"; case 1: return "Approval"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5633,7 +5667,7 @@ public: /// HISTORY: New entity in Release IFC2x2. /// /// IFC2x4 CHANGE  Subtyped from IfcResourceLevelRelationship, order of attributes changed. -class IfcApprovalRelationship : public IfcBaseClass { +class IfcApprovalRelationship : public IfcBaseEntity { public: IfcApproval* RelatedApproval(); /// The approval that other approval is related to. @@ -5642,6 +5676,10 @@ public: bool hasDescription(); IfcText Description(); IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return STRING; case 3: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RelatedApproval"; case 1: return "RelatingApproval"; case 2: return "Description"; case 3: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5665,12 +5703,16 @@ public: /// HISTORY: New entity /// in Release IFC2x Edition /// 2. -class IfcBoundaryCondition : public IfcBaseClass { +class IfcBoundaryCondition : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcBoundaryCondition bool hasName(); /// Optionally defines a name for this boundary condition. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5712,6 +5754,10 @@ public: bool hasRotationalStiffnessByLengthZ(); /// Rotational stiffness value about the z-axis of the coordinate system defined by the instance which uses this resource object. IfcModulusOfRotationalSubgradeReactionMeasure RotationalStiffnessByLengthZ(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcBoundaryCondition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "LinearStiffnessByLengthX"; case 2: return "LinearStiffnessByLengthY"; case 3: return "LinearStiffnessByLengthZ"; case 4: return "RotationalStiffnessByLengthX"; case 5: return "RotationalStiffnessByLengthY"; case 6: return "RotationalStiffnessByLengthZ"; } return IfcBoundaryCondition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5741,6 +5787,10 @@ public: /// Whether the optional attribute LinearStiffnessByAreaZ is defined for this IfcBoundaryFaceCondition bool hasLinearStiffnessByAreaZ(); IfcModulusOfSubgradeReactionMeasure LinearStiffnessByAreaZ(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcBoundaryCondition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "LinearStiffnessByAreaX"; case 2: return "LinearStiffnessByAreaY"; case 3: return "LinearStiffnessByAreaZ"; } return IfcBoundaryCondition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5782,6 +5832,10 @@ public: bool hasRotationalStiffnessZ(); /// Rotational stiffness value about the z-axis of the coordinate system defined by the instance which uses this resource object. IfcRotationalStiffnessMeasure RotationalStiffnessZ(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcBoundaryCondition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "LinearStiffnessX"; case 2: return "LinearStiffnessY"; case 3: return "LinearStiffnessZ"; case 4: return "RotationalStiffnessX"; case 5: return "RotationalStiffnessY"; case 6: return "RotationalStiffnessZ"; } return IfcBoundaryCondition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5805,6 +5859,10 @@ public: bool hasWarpingStiffness(); /// Defines the warping stiffness value. IfcWarpingMomentMeasure WarpingStiffness(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return DOUBLE; } return IfcBoundaryNodeCondition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "WarpingStiffness"; } return IfcBoundaryNodeCondition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5813,11 +5871,15 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcCalendarDate : public IfcBaseClass { +class IfcCalendarDate : public IfcBaseEntity { public: IfcDayInMonthNumber DayComponent(); IfcMonthInYearNumber MonthComponent(); IfcYearNumber YearComponent(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return INT; case 1: return INT; case 2: return INT; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "DayComponent"; case 1: return "MonthComponent"; case 2: return "YearComponent"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5841,7 +5903,7 @@ 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 IfcClassification : public IfcBaseClass { +class IfcClassification : public IfcBaseEntity { public: /// Source (or publisher) for this classification. /// @@ -5865,6 +5927,10 @@ public: /// /// NOTE Examples of names include CI/SfB, Masterformat, BSAB, Uniclass, STABU, DIN276, DIN277 etc. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Source"; case 1: return "Edition"; case 2: return "EditionDate"; case 3: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > Contains(); // INVERSE IfcClassificationItem::ItemOf bool is(Type::Enum v) const; Type::Enum type() const; @@ -5874,13 +5940,17 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcClassificationItem : public IfcBaseClass { +class IfcClassificationItem : public IfcBaseEntity { public: IfcClassificationNotationFacet* Notation(); /// Whether the optional attribute ItemOf is defined for this IfcClassificationItem bool hasItemOf(); IfcClassification* ItemOf(); IfcLabel Title(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Notation"; case 1: return "ItemOf"; case 2: return "Title"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > IsClassifiedItemIn(); // INVERSE IfcClassificationItemRelationship::RelatedItems SHARED_PTR< IfcTemplatedEntityList > IsClassifyingItemIn(); // INVERSE IfcClassificationItemRelationship::RelatingItem bool is(Type::Enum v) const; @@ -5891,10 +5961,14 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcClassificationItemRelationship : public IfcBaseClass { +class IfcClassificationItemRelationship : public IfcBaseEntity { public: IfcClassificationItem* RelatingItem(); SHARED_PTR< IfcTemplatedEntityList > RelatedItems(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RelatingItem"; case 1: return "RelatedItems"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5903,9 +5977,13 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcClassificationNotation : public IfcBaseClass { +class IfcClassificationNotation : public IfcBaseEntity { public: SHARED_PTR< IfcTemplatedEntityList > NotationFacets(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "NotationFacets"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5914,9 +5992,13 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcClassificationNotationFacet : public IfcBaseClass { +class IfcClassificationNotationFacet : public IfcBaseEntity { public: IfcLabel NotationValue(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "NotationValue"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5930,7 +6012,7 @@ public: /// 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 IfcColourSpecification : public IfcBaseClass { +class IfcColourSpecification : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcColourSpecification bool hasName(); @@ -5939,6 +6021,10 @@ public: /// NOTE  Examples are the names of a industry colour classification, such as RAL. /// IFC2x Edition 3 CHANGE  Attribute added. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5961,8 +6047,12 @@ 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 IfcConnectionGeometry : public IfcBaseClass { +class IfcConnectionGeometry : public IfcBaseEntity { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -5995,6 +6085,10 @@ public: bool hasPointOnRelatedElement(); /// 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. IfcPointOrVertexPoint PointOnRelatedElement(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcConnectionGeometry::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "PointOnRelatingElement"; case 1: return "PointOnRelatedElement"; } return IfcConnectionGeometry::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6010,6 +6104,10 @@ public: bool hasLocationAtRelatedElement(); IfcAxis2Placement LocationAtRelatedElement(); IfcProfileDef* ProfileOfPort(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENTITY; } return IfcConnectionGeometry::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "LocationAtRelatingElement"; case 1: return "LocationAtRelatedElement"; case 2: return "ProfileOfPort"; } return IfcConnectionGeometry::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6034,6 +6132,10 @@ public: bool hasSurfaceOnRelatedElement(); /// 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. IfcSurfaceOrFaceSurface SurfaceOnRelatedElement(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcConnectionGeometry::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SurfaceOnRelatingElement"; case 1: return "SurfaceOnRelatedElement"; } return IfcConnectionGeometry::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6054,7 +6156,7 @@ 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 IfcConstraint : public IfcBaseClass { +class IfcConstraint : public IfcBaseEntity { public: /// A name to be used for the constraint (e.g., ChillerCoefficientOfPerformance). IfcLabel Name(); @@ -6083,6 +6185,10 @@ public: /// 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. IfcLabel UserDefinedGrade(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENUMERATION; case 3: return STRING; case 4: return ENTITY; case 5: return ENTITY; case 6: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "ConstraintGrade"; case 3: return "ConstraintSource"; case 4: return "CreatingActor"; case 5: return "CreationTime"; case 6: return "UserDefinedGrade"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ClassifiedAs(); // INVERSE IfcConstraintClassificationRelationship::ClassifiedConstraint SHARED_PTR< IfcTemplatedEntityList > RelatesConstraints(); // INVERSE IfcConstraintRelationship::RelatingConstraint SHARED_PTR< IfcTemplatedEntityList > IsRelatedWith(); // INVERSE IfcConstraintRelationship::RelatedConstraints @@ -6108,7 +6214,7 @@ public: /// Figure 237 illustrates constraint aggregation. /// /// Figure 237 — Constraint aggregation -class IfcConstraintAggregationRelationship : public IfcBaseClass { +class IfcConstraintAggregationRelationship : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcConstraintAggregationRelationship bool hasName(); @@ -6120,6 +6226,10 @@ public: SHARED_PTR< IfcTemplatedEntityList > RelatedConstraints(); /// Enumeration that identifies the logical type of aggregation. IfcLogicalOperatorEnum::IfcLogicalOperatorEnum LogicalAggregator(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return ENTITY_LIST; case 4: return ENUMERATION; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "RelatingConstraint"; case 3: return "RelatedConstraints"; case 4: return "LogicalAggregator"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6128,10 +6238,14 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcConstraintClassificationRelationship : public IfcBaseClass { +class IfcConstraintClassificationRelationship : public IfcBaseEntity { public: IfcConstraint* ClassifiedConstraint(); SHARED_PTR< IfcTemplatedEntityList > RelatedClassifications(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ClassifiedConstraint"; case 1: return "RelatedClassifications"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6149,7 +6263,7 @@ public: /// HISTORY  New entity in Release IFC2x2 (Addendum 1). /// /// IFC2x4 CHANGE  Subtyped from IfcResourceLevelRelationship. -class IfcConstraintRelationship : public IfcBaseClass { +class IfcConstraintRelationship : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcConstraintRelationship bool hasName(); @@ -6161,6 +6275,10 @@ public: IfcConstraint* RelatingConstraint(); /// Constraints that are related with the one referenced as RelatingConstraint. SHARED_PTR< IfcTemplatedEntityList > RelatedConstraints(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "RelatingConstraint"; case 3: return "RelatedConstraints"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6169,13 +6287,17 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcCoordinatedUniversalTimeOffset : public IfcBaseClass { +class IfcCoordinatedUniversalTimeOffset : public IfcBaseEntity { public: IfcHourInDay HourOffset(); /// Whether the optional attribute MinuteOffset is defined for this IfcCoordinatedUniversalTimeOffset bool hasMinuteOffset(); IfcMinuteInHour MinuteOffset(); IfcAheadOrBehind::IfcAheadOrBehind Sense(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return INT; case 1: return INT; case 2: return ENUMERATION; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "HourOffset"; case 1: return "MinuteOffset"; case 2: return "Sense"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6238,6 +6360,10 @@ public: bool hasCondition(); /// The condition under which a cost value applies. IfcText Condition(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return STRING; case 7: return STRING; } return IfcAppliedValue::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "CostType"; case 7: return "Condition"; } return IfcAppliedValue::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6257,7 +6383,7 @@ 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 IfcCurrencyRelationship : public IfcBaseClass { +class IfcCurrencyRelationship : public IfcBaseEntity { public: /// 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. IfcMonetaryUnit* RelatingMonetaryUnit(); @@ -6273,6 +6399,10 @@ public: bool hasRateSource(); /// The source from which an exchange rate is obtained. IfcLibraryInformation* RateSource(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return DOUBLE; case 3: return ENTITY; case 4: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RelatingMonetaryUnit"; case 1: return "RelatedMonetaryUnit"; case 2: return "ExchangeRate"; case 3: return "RateDateTime"; case 4: return "RateSource"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6286,7 +6416,7 @@ public: /// 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 IfcCurveStyleFont : public IfcBaseClass { +class IfcCurveStyleFont : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcCurveStyleFont bool hasName(); @@ -6294,6 +6424,10 @@ public: IfcLabel Name(); /// 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. SHARED_PTR< IfcTemplatedEntityList > PatternList(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "PatternList"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6313,7 +6447,7 @@ 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 IfcCurveStyleFontAndScaling : public IfcBaseClass { +class IfcCurveStyleFontAndScaling : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcCurveStyleFontAndScaling bool hasName(); @@ -6323,6 +6457,10 @@ public: IfcCurveStyleFontSelect CurveFont(); /// The scale factor. IfcPositiveRatioMeasure CurveFontScaling(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY; case 2: return DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "CurveFont"; case 2: return "CurveFontScaling"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6336,7 +6474,7 @@ public: /// 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 IfcCurveStyleFontPattern : public IfcBaseClass { +class IfcCurveStyleFontPattern : public IfcBaseEntity { public: /// The length of the visible segment in the pattern definition. /// @@ -6346,6 +6484,10 @@ public: IfcLengthMeasure VisibleSegmentLength(); /// The length of the invisible segment in the pattern definition. IfcPositiveLengthMeasure InvisibleSegmentLength(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "VisibleSegmentLength"; case 1: return "InvisibleSegmentLength"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6354,10 +6496,14 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcDateAndTime : public IfcBaseClass { +class IfcDateAndTime : public IfcBaseEntity { public: IfcCalendarDate* DateComponent(); IfcLocalTime* TimeComponent(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "DateComponent"; case 1: return "TimeComponent"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6373,7 +6519,7 @@ 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 IfcDerivedUnit : public IfcBaseClass { +class IfcDerivedUnit : public IfcBaseEntity { public: /// The group of units and their exponents that define the derived unit. SHARED_PTR< IfcTemplatedEntityList > Elements(); @@ -6382,6 +6528,10 @@ public: /// Whether the optional attribute UserDefinedType is defined for this IfcDerivedUnit bool hasUserDefinedType(); IfcLabel UserDefinedType(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return ENUMERATION; case 2: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Elements"; case 1: return "UnitType"; case 2: return "UserDefinedType"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6399,12 +6549,16 @@ 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 IfcDerivedUnitElement : public IfcBaseClass { +class IfcDerivedUnitElement : public IfcBaseEntity { public: /// The fixed quantity which is used as the mathematical factor. IfcNamedUnit* Unit(); /// The power that is applied to the unit attribute. int Exponent(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return INT; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Unit"; case 1: return "Exponent"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6430,7 +6584,7 @@ public: /// for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 1.5.1. -class IfcDimensionalExponents : public IfcBaseClass { +class IfcDimensionalExponents : public IfcBaseEntity { public: /// The power of the length base quantity. int LengthExponent(); @@ -6446,6 +6600,10 @@ public: int AmountOfSubstanceExponent(); /// The power of the luminous intensity base quantity. int LuminousIntensityExponent(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return INT; case 1: return INT; case 2: return INT; case 3: return INT; case 4: return INT; case 5: return INT; case 6: return INT; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "LengthExponent"; case 1: return "MassExponent"; case 2: return "TimeExponent"; case 3: return "ElectricCurrentExponent"; case 4: return "ThermodynamicTemperatureExponent"; case 5: return "AmountOfSubstanceExponent"; case 6: return "LuminousIntensityExponent"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6457,7 +6615,7 @@ public: /// IfcDocumentElectronicFormat captures the type of document being referenced as an external source, and for which metadata is specified by IfcDocumentInformation. /// /// HISTORY: New entity in IFC 2x -class IfcDocumentElectronicFormat : public IfcBaseClass { +class IfcDocumentElectronicFormat : public IfcBaseEntity { public: /// Whether the optional attribute FileExtension is defined for this IfcDocumentElectronicFormat bool hasFileExtension(); @@ -6471,6 +6629,10 @@ public: bool hasMimeSubtype(); /// Mime subtype information. IfcLabel MimeSubtype(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "FileExtension"; case 1: return "MimeContentType"; case 2: return "MimeSubtype"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6482,7 +6644,7 @@ public: /// 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 IfcDocumentInformation : public IfcBaseClass { +class IfcDocumentInformation : public IfcBaseEntity { public: /// Identifier that uniquely identifies a document. IfcIdentifier DocumentId(); @@ -6559,6 +6721,10 @@ public: /// - FINAL /// - REVISION IfcDocumentStatusEnum::IfcDocumentStatusEnum Status(); + virtual unsigned int getArgumentCount() const { return 17; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return STRING; case 3: return ENTITY_LIST; case 4: return STRING; case 5: return STRING; case 6: return STRING; case 7: return STRING; case 8: return ENTITY; case 9: return ENTITY_LIST; case 10: return ENTITY; case 11: return ENTITY; case 12: return ENTITY; case 13: return ENTITY; case 14: return ENTITY; case 15: return ENUMERATION; case 16: return ENUMERATION; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "DocumentId"; case 1: return "Name"; case 2: return "Description"; case 3: return "DocumentReferences"; case 4: return "Purpose"; case 5: return "IntendedUse"; case 6: return "Scope"; case 7: return "Revision"; case 8: return "DocumentOwner"; case 9: return "Editors"; case 10: return "CreationTime"; case 11: return "LastRevisionTime"; case 12: return "ElectronicFormat"; case 13: return "ValidFrom"; case 14: return "ValidUntil"; case 15: return "Confidentiality"; case 16: return "Status"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > IsPointedTo(); // INVERSE IfcDocumentInformationRelationship::RelatedDocuments SHARED_PTR< IfcTemplatedEntityList > IsPointer(); // INVERSE IfcDocumentInformationRelationship::RelatingDocument bool is(Type::Enum v) const; @@ -6577,7 +6743,7 @@ 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 IfcDocumentInformationRelationship : public IfcBaseClass { +class IfcDocumentInformationRelationship : public IfcBaseEntity { public: /// The document that acts as the parent, referencing or original document in a relationship. IfcDocumentInformation* RelatingDocument(); @@ -6587,6 +6753,10 @@ public: bool hasRelationshipType(); /// Describes the type of relationship between documents. This could be sub-document, replacement etc. The interpretation has to be established in an application context. IfcLabel RelationshipType(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RelatingDocument"; case 1: return "RelatedDocuments"; case 2: return "RelationshipType"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6595,7 +6765,7 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcDraughtingCalloutRelationship : public IfcBaseClass { +class IfcDraughtingCalloutRelationship : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcDraughtingCalloutRelationship bool hasName(); @@ -6605,6 +6775,10 @@ public: IfcText Description(); IfcDraughtingCallout* RelatingDraughtingCallout(); IfcDraughtingCallout* RelatedDraughtingCallout(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "RelatingDraughtingCallout"; case 3: return "RelatedDraughtingCallout"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6620,6 +6794,10 @@ public: /// Whether the optional attribute UserDefinedCategory is defined for this IfcEnvironmentalImpactValue bool hasUserDefinedCategory(); IfcLabel UserDefinedCategory(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return STRING; case 7: return ENUMERATION; case 8: return STRING; } return IfcAppliedValue::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "ImpactType"; case 7: return "Category"; case 8: return "UserDefinedCategory"; } return IfcAppliedValue::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6637,7 +6815,7 @@ public: /// IfcExternalReference is an abstract supertype of all external reference entities. /// /// HISTORY New entity in IFC2x. -class IfcExternalReference : public IfcBaseClass { +class IfcExternalReference : public IfcBaseEntity { public: /// Whether the optional attribute Location is defined for this IfcExternalReference bool hasLocation(); @@ -6652,6 +6830,10 @@ public: bool hasName(); /// 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). IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Location"; case 1: return "ItemReference"; case 2: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6670,6 +6852,10 @@ public: /// HISTORY: New entity in IFC2x2. class IfcExternallyDefinedHatchStyle : public IfcExternalReference { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6687,6 +6873,10 @@ public: /// IFC2x3 CHANGE  The spelling has been corrected from IfcExternallyDefinedSufaceStyle with no upward compatibility. class IfcExternallyDefinedSurfaceStyle : public IfcExternalReference { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6706,6 +6896,10 @@ public: /// HISTORY New entity in IFC2x2. class IfcExternallyDefinedSymbol : public IfcExternalReference { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6723,6 +6917,10 @@ public: /// HISTORY  New entity in IFC2x2. class IfcExternallyDefinedTextFont : public IfcExternalReference { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6754,7 +6952,7 @@ public: /// underlying AxisCurve supports this concept. /// /// Figure 242 — Grid axis -class IfcGridAxis : public IfcBaseClass { +class IfcGridAxis : public IfcBaseEntity { public: /// Whether the optional attribute AxisTag is defined for this IfcGridAxis bool hasAxisTag(); @@ -6764,6 +6962,10 @@ public: IfcCurve* AxisCurve(); /// Defines whether the original sense of curve is used or whether it is reversed in the context of the grid axis. IfcBoolean SameSense(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY; case 2: return BOOL; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "AxisTag"; case 1: return "AxisCurve"; case 2: return "SameSense"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > PartOfW(); // INVERSE IfcGrid::WAxes SHARED_PTR< IfcTemplatedEntityList > PartOfV(); // INVERSE IfcGrid::VAxes SHARED_PTR< IfcTemplatedEntityList > PartOfU(); // INVERSE IfcGrid::UAxes @@ -6779,12 +6981,16 @@ public: /// The IfcIrregularTimeSeriesValue describes a value (or set of values) at a particular time point. /// /// HISTORY: New entity in IFC 2x2. -class IfcIrregularTimeSeriesValue : public IfcBaseClass { +class IfcIrregularTimeSeriesValue : public IfcBaseEntity { public: /// The specification of the time point. IfcDateTimeSelect TimeStamp(); /// A list of time-series values. At least one value is required. SHARED_PTR< IfcTemplatedEntityList > ListValues(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "TimeStamp"; case 1: return "ListValues"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6801,7 +7007,7 @@ public: /// Entity in IFC2x. /// /// IFC2x4 CHANGE  Location attribute added, HasLibraryReferences inverse attribute added (previous LibraryReference changed to inverse). -class IfcLibraryInformation : public IfcBaseClass { +class IfcLibraryInformation : public IfcBaseEntity { public: /// The name which is used to identify the library. IfcLabel Name(); @@ -6822,6 +7028,10 @@ public: /// Whether the optional attribute LibraryReference is defined for this IfcLibraryInformation bool hasLibraryReference(); SHARED_PTR< IfcTemplatedEntityList > LibraryReference(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return ENTITY; case 4: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Version"; case 2: return "Publisher"; case 3: return "VersionDate"; case 4: return "LibraryReference"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6839,6 +7049,10 @@ public: /// IFC2x4 CHANGE  Description and Language attribute added; ReferencedLibrary attribute added (reversing previous ReferenceIntoLibrary inverse relationship). class IfcLibraryReference : public IfcExternalReference { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ReferenceIntoLibrary(); // INVERSE IfcLibraryInformation::LibraryReference bool is(Type::Enum v) const; Type::Enum type() const; @@ -6863,7 +7077,7 @@ 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 IfcLightDistributionData : public IfcBaseClass { +class IfcLightDistributionData : public IfcBaseEntity { public: /// The main plane angle (A, B or C angles, according to the light distribution curve chosen). IfcPlaneAngleMeasure MainPlaneAngle(); @@ -6873,6 +7087,10 @@ public: std::vector /*[1:?]*/ SecondaryPlaneAngle(); /// The luminous intensity distribution measure for this pair of main and secondary plane angles according to the light distribution curve chosen. std::vector /*[1:?]*/ LuminousIntensity(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return VECTOR_DOUBLE; case 2: return VECTOR_DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "MainPlaneAngle"; case 1: return "SecondaryPlaneAngle"; case 2: return "LuminousIntensity"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6884,12 +7102,16 @@ public: /// 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 IfcLightIntensityDistribution : public IfcBaseClass { +class IfcLightIntensityDistribution : public IfcBaseEntity { public: /// Standardized light distribution curve used to define the luminous intensity of the light in all directions. IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum LightDistributionCurve(); /// 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. SHARED_PTR< IfcTemplatedEntityList > DistributionData(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "LightDistributionCurve"; case 1: return "DistributionData"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6898,7 +7120,7 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcLocalTime : public IfcBaseClass { +class IfcLocalTime : public IfcBaseEntity { public: IfcHourInDay HourComponent(); /// Whether the optional attribute MinuteComponent is defined for this IfcLocalTime @@ -6913,6 +7135,10 @@ public: /// Whether the optional attribute DaylightSavingOffset is defined for this IfcLocalTime bool hasDaylightSavingOffset(); IfcDaylightSavingHour DaylightSavingOffset(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return INT; case 1: return INT; case 2: return DOUBLE; case 3: return ENTITY; case 4: return INT; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "HourComponent"; case 1: return "MinuteComponent"; case 2: return "SecondComponent"; case 3: return "Zone"; case 4: return "DaylightSavingOffset"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -6948,7 +7174,7 @@ public: /// HISTORYÿNew entity in IFC2x4 /// /// IFC2x4 CHANGEÿ The attributes Description and Category have been added. -class IfcMaterial : public IfcBaseClass { +class IfcMaterial : public IfcBaseEntity { public: /// Name of the material. /// @@ -6956,6 +7182,10 @@ public: /// /// 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. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasRepresentation(); // INVERSE IfcMaterialDefinitionRepresentation::RepresentedMaterial SHARED_PTR< IfcTemplatedEntityList > ClassifiedAs(); // INVERSE IfcMaterialClassificationRelationship::ClassifiedMaterial bool is(Type::Enum v) const; @@ -6971,12 +7201,16 @@ public: /// HISTORYÿ New entity in IFC2x. /// /// IFC2x4 CHANGEÿ The entity IfcMaterialClassificationRelationship is deprecated since IFC2x4 and shall no longer be used. Use IfcExternalReferenceRelationship instead. -class IfcMaterialClassificationRelationship : public IfcBaseClass { +class IfcMaterialClassificationRelationship : public IfcBaseEntity { public: /// The material classifications identifying the type of material. SHARED_PTR< IfcTemplatedEntityList > MaterialClassifications(); /// Material being classified. IfcMaterial* ClassifiedMaterial(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "MaterialClassifications"; case 1: return "ClassifiedMaterial"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7008,7 +7242,7 @@ 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 IfcMaterialLayer : public IfcBaseClass { +class IfcMaterialLayer : public IfcBaseEntity { public: /// Whether the optional attribute Material is defined for this IfcMaterialLayer bool hasMaterial(); @@ -7028,6 +7262,10 @@ public: /// 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). IfcLogical IsVentilated(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; case 2: return BOOL; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Material"; case 1: return "LayerThickness"; case 2: return "IsVentilated"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ToMaterialLayerSet(); // INVERSE IfcMaterialLayerSet::MaterialLayers bool is(Type::Enum v) const; Type::Enum type() const; @@ -7070,7 +7308,7 @@ public: /// placed on top of the previous (no gaps or overlaps). /// /// Figure 285 — Material layer set -class IfcMaterialLayerSet : public IfcBaseClass { +class IfcMaterialLayerSet : public IfcBaseEntity { public: /// Identification of the layers from which the material layer set is composed. SHARED_PTR< IfcTemplatedEntityList > MaterialLayers(); @@ -7078,6 +7316,10 @@ public: bool hasLayerSetName(); /// The name by which the material layer set is known. IfcLabel LayerSetName(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "MaterialLayers"; case 1: return "LayerSetName"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7186,7 +7428,7 @@ public: /// geometry. /// /// Figure 288 — Material layer set usage for roof slab -class IfcMaterialLayerSetUsage : public IfcBaseClass { +class IfcMaterialLayerSetUsage : public IfcBaseEntity { public: /// The IfcMaterialLayerSet set to which the usage is applied. IfcMaterialLayerSet* ForLayerSet(); @@ -7201,6 +7443,10 @@ public: IfcDirectionSenseEnum::IfcDirectionSenseEnum DirectionSense(); /// 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. IfcLengthMeasure OffsetFromReferenceLine(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENUMERATION; case 2: return ENUMERATION; case 3: return DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ForLayerSet"; case 1: return "LayerSetDirection"; case 2: return "DirectionSense"; case 3: return "OffsetFromReferenceLine"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7226,10 +7472,14 @@ public: /// /// IFC2x4 CHANGEÿ The entity IfcMaterialList is deprecated and shall no longer /// be used. Use IfcMaterialConstituentSet instead. -class IfcMaterialList : public IfcBaseClass { +class IfcMaterialList : public IfcBaseEntity { public: /// Materials used in a composition of substances. SHARED_PTR< IfcTemplatedEntityList > Materials(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Materials"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7260,12 +7510,16 @@ 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 IfcMaterialProperties : public IfcBaseClass { +class IfcMaterialProperties : public IfcBaseEntity { public: /// Reference to the material definition to which the set of properties is assigned. /// /// IFC2x4 CHANGE The datatype has been changed to supertype IfcMaterialDefinition. IfcMaterial* Material(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Material"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7284,12 +7538,16 @@ 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 IfcMeasureWithUnit : public IfcBaseClass { +class IfcMeasureWithUnit : public IfcBaseEntity { public: /// The value of the physical quantity when expressed in the specified units. IfcValue ValueComponent(); /// The unit in which the physical quantity is expressed. IfcUnit UnitComponent(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ValueComponent"; case 1: return "UnitComponent"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7315,6 +7573,10 @@ public: /// Whether the optional attribute ThermalExpansionCoefficient is defined for this IfcMechanicalMaterialProperties bool hasThermalExpansionCoefficient(); IfcThermalExpansionCoefficientMeasure ThermalExpansionCoefficient(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "DynamicViscosity"; case 2: return "YoungModulus"; case 3: return "ShearModulus"; case 4: return "PoissonRatio"; case 5: return "ThermalExpansionCoefficient"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7346,6 +7608,10 @@ public: /// Whether the optional attribute Relaxations is defined for this IfcMechanicalSteelMaterialProperties bool hasRelaxations(); SHARED_PTR< IfcTemplatedEntityList > Relaxations(); + virtual unsigned int getArgumentCount() const { return 13; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return ENTITY_LIST; } return IfcMechanicalMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "YieldStress"; case 7: return "UltimateStress"; case 8: return "UltimateStrain"; case 9: return "HardeningModule"; case 10: return "ProportionalStress"; case 11: return "PlasticStrain"; case 12: return "Relaxations"; } return IfcMechanicalMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7416,6 +7682,10 @@ public: IfcLabel ValueSource(); /// The value with data type defined by the underlying type accesses via IfcMetricValueSelect. IfcMetricValueSelect DataValue(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENUMERATION; case 8: return STRING; case 9: return ENTITY; } return IfcConstraint::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "Benchmark"; case 8: return "ValueSource"; case 9: return "DataValue"; } return IfcConstraint::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7429,10 +7699,14 @@ public: /// HISTORY: New entity in IFC Release 2x. /// /// IFC2x4 CHANGE: Type of the attribute Currency changed. -class IfcMonetaryUnit : public IfcBaseClass { +class IfcMonetaryUnit : public IfcBaseEntity { public: /// 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. IfcCurrencyEnum::IfcCurrencyEnum Currency(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Currency"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7446,12 +7720,16 @@ public: /// 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 IfcNamedUnit : public IfcBaseClass { +class IfcNamedUnit : public IfcBaseEntity { public: /// The dimensional exponents of the SI base units by which the named unit is defined. IfcDimensionalExponents* Dimensions(); /// The type of the unit. IfcUnitEnum::IfcUnitEnum UnitType(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENUMERATION; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Dimensions"; case 1: return "UnitType"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7471,8 +7749,12 @@ 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 IfcObjectPlacement : public IfcBaseClass { +class IfcObjectPlacement : public IfcBaseEntity { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > PlacesObject(); // INVERSE IfcProduct::ObjectPlacement SHARED_PTR< IfcTemplatedEntityList > ReferencedByPlacements(); // INVERSE IfcLocalPlacement::PlacementRelTo bool is(Type::Enum v) const; @@ -7508,6 +7790,10 @@ public: bool hasUserDefinedQualifier(); /// A user defined value that qualifies the type of objective constraint when ObjectiveQualifier attribute of type IfcObjectiveEnum has value USERDEFINED. IfcLabel UserDefinedQualifier(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENTITY; case 8: return ENTITY; case 9: return ENUMERATION; case 10: return STRING; } return IfcConstraint::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "BenchmarkValues"; case 8: return "ResultValues"; case 9: return "ObjectiveQualifier"; case 10: return "UserDefinedQualifier"; } return IfcConstraint::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7545,6 +7831,10 @@ public: /// Whether the optional attribute SolarReflectanceBack is defined for this IfcOpticalMaterialProperties bool hasSolarReflectanceBack(); IfcPositiveRatioMeasure SolarReflectanceBack(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "VisibleTransmittance"; case 2: return "SolarTransmittance"; case 3: return "ThermalIrTransmittance"; case 4: return "ThermalIrEmissivityBack"; case 5: return "ThermalIrEmissivityFront"; case 6: return "VisibleReflectanceBack"; case 7: return "VisibleReflectanceFront"; case 8: return "SolarReflectanceFront"; case 9: return "SolarReflectanceBack"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7561,7 +7851,7 @@ public: /// /// HISTORY New entity in IFC Release 1.5.1. /// IFC 2x4 change: attribute Id renamed to Identification. -class IfcOrganization : public IfcBaseClass { +class IfcOrganization : public IfcBaseEntity { public: /// Whether the optional attribute Id is defined for this IfcOrganization bool hasId(); @@ -7581,6 +7871,10 @@ public: /// Postal and telecom addresses of an organization. /// NOTE: There may be several addresses related to an organization. SHARED_PTR< IfcTemplatedEntityList > Addresses(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return STRING; case 3: return ENTITY_LIST; case 4: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Id"; case 1: return "Name"; case 2: return "Description"; case 3: return "Roles"; case 4: return "Addresses"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > IsRelatedBy(); // INVERSE IfcOrganizationRelationship::RelatedOrganizations SHARED_PTR< IfcTemplatedEntityList > Relates(); // INVERSE IfcOrganizationRelationship::RelatingOrganization SHARED_PTR< IfcTemplatedEntityList > Engages(); // INVERSE IfcPersonAndOrganization::TheOrganization @@ -7598,7 +7892,7 @@ public: /// /// HISTORY New entity in IFC Release 2x. /// IFC 2x4 change: attribute Name made optional. -class IfcOrganizationRelationship : public IfcBaseClass { +class IfcOrganizationRelationship : public IfcBaseEntity { public: /// The word or group of words by which the relationship is referred to. IfcLabel Name(); @@ -7610,6 +7904,10 @@ public: IfcOrganization* RelatingOrganization(); /// The other, possibly dependent, organizations which are the related parts of the relationship between organizations. SHARED_PTR< IfcTemplatedEntityList > RelatedOrganizations(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "RelatingOrganization"; case 3: return "RelatedOrganizations"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7628,7 +7926,7 @@ 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 IfcOwnerHistory : public IfcBaseClass { +class IfcOwnerHistory : public IfcBaseEntity { public: /// 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. IfcPersonAndOrganization* OwningUser(); @@ -7654,6 +7952,10 @@ public: IfcApplication* LastModifyingApplication(); /// 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. IfcTimeStamp CreationDate(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENUMERATION; case 3: return ENUMERATION; case 4: return INT; case 5: return ENTITY; case 6: return ENTITY; case 7: return INT; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "OwningUser"; case 1: return "OwningApplication"; case 2: return "State"; case 3: return "ChangeAction"; case 4: return "LastModifiedDate"; case 5: return "LastModifyingUser"; case 6: return "LastModifyingApplication"; case 7: return "CreationDate"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7671,7 +7973,7 @@ 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 IfcPerson : public IfcBaseClass { +class IfcPerson : public IfcBaseEntity { public: /// Whether the optional attribute Id is defined for this IfcPerson bool hasId(); @@ -7710,6 +8012,10 @@ public: /// Postal and telecommunication addresses of a person. /// NOTE - A person may have several addresses. SHARED_PTR< IfcTemplatedEntityList > Addresses(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return STRING; case 3: return VECTOR_STRING; case 4: return VECTOR_STRING; case 5: return VECTOR_STRING; case 6: return ENTITY_LIST; case 7: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Id"; case 1: return "FamilyName"; case 2: return "GivenName"; case 3: return "MiddleNames"; case 4: return "PrefixTitles"; case 5: return "SuffixTitles"; case 6: return "Roles"; case 7: return "Addresses"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > EngagedIn(); // INVERSE IfcPersonAndOrganization::ThePerson bool is(Type::Enum v) const; Type::Enum type() const; @@ -7724,7 +8030,7 @@ public: /// NOTE Corresponds to the following entity in ISO-10303-41: person_and_organization. /// /// HISTORY New entity in IFC Release 1.5.1 -class IfcPersonAndOrganization : public IfcBaseClass { +class IfcPersonAndOrganization : public IfcBaseEntity { public: /// The person who is related to the organization. IfcPerson* ThePerson(); @@ -7734,6 +8040,10 @@ public: bool hasRoles(); /// 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. SHARED_PTR< IfcTemplatedEntityList > Roles(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ThePerson"; case 1: return "TheOrganization"; case 2: return "Roles"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7747,7 +8057,7 @@ public: /// 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 IfcPhysicalQuantity : public IfcBaseClass { +class IfcPhysicalQuantity : public IfcBaseEntity { public: /// Name of the element quantity or measure. The name attribute has to be made recognizable by further agreements. IfcLabel Name(); @@ -7755,6 +8065,10 @@ public: bool hasDescription(); /// Further explanation that might be given to the quantity. IfcText Description(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > PartOfComplex(); // INVERSE IfcPhysicalComplexQuantity::HasQuantities bool is(Type::Enum v) const; Type::Enum type() const; @@ -7779,6 +8093,10 @@ public: bool hasUnit(); /// 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. IfcNamedUnit* Unit(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcPhysicalQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Unit"; } return IfcPhysicalQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7826,6 +8144,10 @@ public: bool hasCountry(); /// The name of a country. IfcLabel Country(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return STRING; case 4: return VECTOR_STRING; case 5: return STRING; case 6: return STRING; case 7: return STRING; case 8: return STRING; case 9: return STRING; } return IfcAddress::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "InternalLocation"; case 4: return "AddressLines"; case 5: return "PostalBox"; case 6: return "Town"; case 7: return "Region"; case 8: return "PostalCode"; case 9: return "Country"; } return IfcAddress::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7841,10 +8163,14 @@ 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 IfcPreDefinedItem : public IfcBaseClass { +class IfcPreDefinedItem : public IfcBaseEntity { public: /// The string by which the pre defined item is identified. Allowable values for the string are declared at the level of subtypes. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7862,6 +8188,10 @@ public: /// HISTORY New entity in IFC2x2. class IfcPreDefinedSymbol : public IfcPreDefinedItem { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7872,6 +8202,10 @@ public: }; class IfcPreDefinedTerminatorSymbol : public IfcPreDefinedSymbol { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedSymbol::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedSymbol::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7893,6 +8227,10 @@ public: /// IFC2x3 CHANGE  The IfcTextStyleFontModel has been added as new subtype. class IfcPreDefinedTextFont : public IfcPreDefinedItem { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7916,7 +8254,7 @@ 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 IfcPresentationLayerAssignment : public IfcBaseClass { +class IfcPresentationLayerAssignment : public IfcBaseEntity { public: /// Name of the layer. IfcLabel Name(); @@ -7930,6 +8268,10 @@ public: bool hasIdentifier(); /// An (internal) identifier assigned to the layer. IfcIdentifier Identifier(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY_LIST; case 3: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "AssignedItems"; case 3: return "Identifier"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7965,6 +8307,10 @@ public: /// /// IFC2x4 CHANGE  The data type has been changed from IfcPresentationStyleSelect (now deprecated) to IfcPresentationStyle. SHARED_PTR< IfcTemplatedEntityList > LayerStyles(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return BOOL; case 5: return BOOL; case 6: return BOOL; case 7: return ENTITY_LIST; } return IfcPresentationLayerAssignment::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "LayerOn"; case 5: return "LayerFrozen"; case 6: return "LayerBlocked"; case 7: return "LayerStyles"; } return IfcPresentationLayerAssignment::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7978,12 +8324,16 @@ public: /// 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 IfcPresentationStyle : public IfcBaseClass { +class IfcPresentationStyle : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcPresentationStyle bool hasName(); /// Name of the presentation style. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -7997,10 +8347,14 @@ public: /// NOTE Corresponding ISO 10303 name: presentation_style_assignment. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY New entity in Release IFC2x2. -class IfcPresentationStyleAssignment : public IfcBaseClass { +class IfcPresentationStyleAssignment : public IfcBaseEntity { public: /// A set of presentation styles that are assigned to styled items. SHARED_PTR< IfcTemplatedEntityList > Styles(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Styles"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8026,7 +8380,7 @@ public: /// IFC2x3 NOTE ÿUsers should not instantiate the entity from IFC2x Edition 3 onwards. /// /// IFC2x4 CHANGE  Entity made abstract. -class IfcProductRepresentation : public IfcBaseClass { +class IfcProductRepresentation : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcProductRepresentation bool hasName(); @@ -8038,6 +8392,10 @@ public: IfcText Description(); /// Contained list of representations (including shape representations). Each member defines a valid representation of a particular type within a particular representation context. SHARED_PTR< IfcTemplatedEntityList > Representations(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "Representations"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8060,6 +8418,10 @@ public: /// Whether the optional attribute CO2Content is defined for this IfcProductsOfCombustionProperties bool hasCO2Content(); IfcPositiveRatioMeasure CO2Content(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "SpecificHeatCapacity"; case 2: return "N20Content"; case 3: return "COContent"; case 4: return "CO2Content"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8238,7 +8600,7 @@ 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 IfcProfileDef : public IfcBaseClass { +class IfcProfileDef : public IfcBaseEntity { public: /// 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. IfcProfileTypeEnum::IfcProfileTypeEnum ProfileType(); @@ -8246,6 +8608,10 @@ public: bool hasProfileName(); /// 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. IfcLabel ProfileName(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; case 1: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ProfileType"; case 1: return "ProfileName"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8265,7 +8631,7 @@ 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 IfcProfileProperties : public IfcBaseClass { +class IfcProfileProperties : public IfcBaseEntity { public: /// Whether the optional attribute ProfileName is defined for this IfcProfileProperties bool hasProfileName(); @@ -8274,6 +8640,10 @@ public: bool hasProfileDefinition(); /// Profile definition which is qualified by these properties. IfcProfileDef* ProfileDefinition(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ProfileName"; case 1: return "ProfileDefinition"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8285,7 +8655,7 @@ public: /// 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 IfcProperty : public IfcBaseClass { +class IfcProperty : public IfcBaseEntity { public: /// Name for this property. This label is the significant name string that defines the semantic meaning for the property. IfcIdentifier Name(); @@ -8293,6 +8663,10 @@ public: bool hasDescription(); /// Informative text to explain the property. IfcText Description(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > PropertyForDependance(); // INVERSE IfcPropertyDependencyRelationship::DependingProperty SHARED_PTR< IfcTemplatedEntityList > PropertyDependsOn(); // INVERSE IfcPropertyDependencyRelationship::DependantProperty SHARED_PTR< IfcTemplatedEntityList > PartOfComplex(); // INVERSE IfcComplexProperty::HasProperties @@ -8304,7 +8678,7 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcPropertyConstraintRelationship : public IfcBaseClass { +class IfcPropertyConstraintRelationship : public IfcBaseEntity { public: IfcConstraint* RelatingConstraint(); SHARED_PTR< IfcTemplatedEntityList > RelatedProperties(); @@ -8314,6 +8688,10 @@ public: /// Whether the optional attribute Description is defined for this IfcPropertyConstraintRelationship bool hasDescription(); IfcText Description(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return STRING; case 3: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RelatingConstraint"; case 1: return "RelatedProperties"; case 2: return "Name"; case 3: return "Description"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8330,7 +8708,7 @@ 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 IfcPropertyDependencyRelationship : public IfcBaseClass { +class IfcPropertyDependencyRelationship : public IfcBaseEntity { public: /// The property on which the relationship depends. IfcProperty* DependingProperty(); @@ -8346,6 +8724,10 @@ public: bool hasExpression(); /// Expression that further describes the nature of the dependency relation. IfcText Expression(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return STRING; case 3: return STRING; case 4: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "DependingProperty"; case 1: return "DependantProperty"; case 2: return "Name"; case 3: return "Description"; case 4: return "Expression"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8400,7 +8782,7 @@ 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 IfcPropertyEnumeration : public IfcBaseClass { +class IfcPropertyEnumeration : public IfcBaseEntity { public: /// Name of this enumeration. IfcLabel Name(); @@ -8410,6 +8792,10 @@ public: bool hasUnit(); /// 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. IfcUnit Unit(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY_LIST; case 2: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "EnumerationValues"; case 2: return "Unit"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8427,6 +8813,10 @@ class IfcQuantityArea : public IfcPhysicalSimpleQuantity { public: /// Area measure value of this quantity. IfcAreaMeasure AreaValue(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcPhysicalSimpleQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "AreaValue"; } return IfcPhysicalSimpleQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8444,6 +8834,10 @@ class IfcQuantityCount : public IfcPhysicalSimpleQuantity { public: /// Count measure value of this quantity. IfcCountMeasure CountValue(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcPhysicalSimpleQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "CountValue"; } return IfcPhysicalSimpleQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8461,6 +8855,10 @@ class IfcQuantityLength : public IfcPhysicalSimpleQuantity { public: /// Length measure value of this quantity. IfcLengthMeasure LengthValue(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcPhysicalSimpleQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "LengthValue"; } return IfcPhysicalSimpleQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8478,6 +8876,10 @@ class IfcQuantityTime : public IfcPhysicalSimpleQuantity { public: /// Time measure value of this quantity. IfcTimeMeasure TimeValue(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcPhysicalSimpleQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "TimeValue"; } return IfcPhysicalSimpleQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8495,6 +8897,10 @@ class IfcQuantityVolume : public IfcPhysicalSimpleQuantity { public: /// Volume measure value of this quantity. IfcVolumeMeasure VolumeValue(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcPhysicalSimpleQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "VolumeValue"; } return IfcPhysicalSimpleQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8512,6 +8918,10 @@ class IfcQuantityWeight : public IfcPhysicalSimpleQuantity { public: /// Mass measure value of this quantity. IfcMassMeasure WeightValue(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcPhysicalSimpleQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "WeightValue"; } return IfcPhysicalSimpleQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8520,7 +8930,7 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcReferencesValueDocument : public IfcBaseClass { +class IfcReferencesValueDocument : public IfcBaseEntity { public: IfcDocumentSelect ReferencedDocument(); SHARED_PTR< IfcTemplatedEntityList > ReferencingValues(); @@ -8530,6 +8940,10 @@ public: /// Whether the optional attribute Description is defined for this IfcReferencesValueDocument bool hasDescription(); IfcText Description(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return STRING; case 3: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ReferencedDocument"; case 1: return "ReferencingValues"; case 2: return "Name"; case 3: return "Description"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8543,7 +8957,7 @@ public: /// 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 IfcReinforcementBarProperties : public IfcBaseClass { +class IfcReinforcementBarProperties : public IfcBaseEntity { public: /// The total effective cross-section area of the reinforcement of a specific steel grade. IfcAreaMeasure TotalCrossSectionArea(); @@ -8565,6 +8979,10 @@ public: bool hasBarCount(); /// The number of bars with identical nominal diameter and steel grade included in the specific reinforcement configuration. IfcCountMeasure BarCount(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return STRING; case 2: return ENUMERATION; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "TotalCrossSectionArea"; case 1: return "SteelGrade"; case 2: return "BarSurface"; case 3: return "EffectiveDepth"; case 4: return "NominalBarDiameter"; case 5: return "BarCount"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8573,10 +8991,14 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcRelaxation : public IfcBaseClass { +class IfcRelaxation : public IfcBaseEntity { public: IfcNormalisedRatioMeasure RelaxationValue(); IfcNormalisedRatioMeasure InitialStress(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RelaxationValue"; case 1: return "InitialStress"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8631,7 +9053,7 @@ public: /// IFC2x4 CHANGE  Entity /// IfcRepresentation has been changed into an ABSTRACT /// supertype. -class IfcRepresentation : public IfcBaseClass { +class IfcRepresentation : public IfcBaseEntity { public: /// Definition of the representation context for which the different subtypes of representation are valid. IfcRepresentationContext* ContextOfItems(); @@ -8646,8 +9068,12 @@ public: IfcLabel RepresentationType(); /// Set of geometric representation items that are defined for this representation. SHARED_PTR< IfcTemplatedEntityList > Items(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return STRING; case 2: return STRING; case 3: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ContextOfItems"; case 1: return "RepresentationIdentifier"; case 2: return "RepresentationType"; case 3: return "Items"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > RepresentationMap(); // INVERSE IfcRepresentationMap::MappedRepresentation - SHARED_PTR< IfcTemplatedEntityList > LayerAssignments(); // INVERSE IfcPresentationLayerAssignment::AssignedItems + SHARED_PTR< IfcTemplatedEntityList > LayerAssignments(); // INVERSE IfcPresentationLayerAssignment::Assigneditems SHARED_PTR< IfcTemplatedEntityList > OfProductRepresentation(); // INVERSE IfcProductRepresentation::Representations bool is(Type::Enum v) const; Type::Enum type() const; @@ -8667,7 +9093,7 @@ public: /// /// IFC2x4 CHANGE Entity made abstract, had been deprecated from instantiation since /// IFC2x2. -class IfcRepresentationContext : public IfcBaseClass { +class IfcRepresentationContext : public IfcBaseEntity { public: /// Whether the optional attribute ContextIdentifier is defined for this IfcRepresentationContext bool hasContextIdentifier(); @@ -8677,6 +9103,10 @@ public: bool hasContextType(); /// The description of the type of a representation context. The supported values for context type are to be specified by implementers agreements. IfcLabel ContextType(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ContextIdentifier"; case 1: return "ContextType"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > RepresentationsInContext(); // INVERSE IfcRepresentation::ContextOfItems bool is(Type::Enum v) const; Type::Enum type() const; @@ -8718,8 +9148,12 @@ 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 IfcRepresentationItem : public IfcBaseClass { +class IfcRepresentationItem : public IfcBaseEntity { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > LayerAssignments(); // INVERSE IfcPresentationLayerAssignment::AssignedItems SHARED_PTR< IfcTemplatedEntityList > StyledByItem(); // INVERSE IfcStyledItem::Item bool is(Type::Enum v) const; @@ -8741,13 +9175,17 @@ 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 IfcRepresentationMap : public IfcBaseClass { +class IfcRepresentationMap : public IfcBaseEntity { public: /// An axis2 placement that defines the position about which the mapped /// representation is mapped. IfcAxis2Placement MappingOrigin(); /// A representation that is mapped to at least one mapped item. IfcRepresentation* MappedRepresentation(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "MappingOrigin"; case 1: return "MappedRepresentation"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > MapUsage(); // INVERSE IfcMappedItem::MappingSource bool is(Type::Enum v) const; Type::Enum type() const; @@ -8772,6 +9210,10 @@ public: bool hasRibSpacing(); IfcPositiveLengthMeasure RibSpacing(); IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum Direction(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return ENUMERATION; } return IfcProfileProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Thickness"; case 3: return "RibHeight"; case 4: return "RibWidth"; case 5: return "RibSpacing"; case 6: return "Direction"; } return IfcProfileProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8789,7 +9231,7 @@ public: /// HISTORY New entity in IFC Release 1.0 /// /// IFC2x4 CHANGE The attribute OwnerHistory has been made OPTIONAL. -class IfcRoot : public IfcBaseClass { +class IfcRoot : public IfcBaseEntity { public: /// Assignment of a globally unique identifier within the entire software world. IfcGloballyUniqueId GlobalId(); @@ -8807,6 +9249,10 @@ public: bool hasDescription(); /// Optional description, provided for exchanging informative comments. IfcText Description(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY; case 2: return STRING; case 3: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "GlobalId"; case 1: return "OwnerHistory"; case 2: return "Name"; case 3: return "Description"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8832,6 +9278,10 @@ public: /// /// NOTE  Even though the SI system's base unit for mass is kilogram, the IfcSIUnit for mass is gram if no Prefix is asserted. IfcSIUnitName::IfcSIUnitName Name(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENUMERATION; case 3: return ENUMERATION; } return IfcNamedUnit::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Prefix"; case 3: return "Name"; } return IfcNamedUnit::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8845,7 +9295,7 @@ public: /// 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 IfcSectionProperties : public IfcBaseClass { +class IfcSectionProperties : public IfcBaseEntity { public: /// An indicator whether a specific piece of a cross section is uniform or tapered in longitudinal direction. IfcSectionTypeEnum::IfcSectionTypeEnum SectionType(); @@ -8855,6 +9305,10 @@ public: bool hasEndProfile(); /// The cross section profile at the end point of the longitudinal section. IfcProfileDef* EndProfile(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; case 1: return ENTITY; case 2: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SectionType"; case 1: return "StartProfile"; case 2: return "EndProfile"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8870,7 +9324,7 @@ 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 IfcSectionReinforcementProperties : public IfcBaseClass { +class IfcSectionReinforcementProperties : public IfcBaseEntity { public: /// The start position in longitudinal direction for the section reinforcement properties. IfcLengthMeasure LongitudinalStartPosition(); @@ -8886,6 +9340,10 @@ public: IfcSectionProperties* SectionDefinition(); /// The set of reinforcment properties attached to a section reinforcement properties definition. SHARED_PTR< IfcTemplatedEntityList > CrossSectionReinforcementDefinitions(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return DOUBLE; case 2: return DOUBLE; case 3: return ENUMERATION; case 4: return ENTITY; case 5: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "LongitudinalStartPosition"; case 1: return "LongitudinalEndPosition"; case 2: return "TransversePosition"; case 3: return "ReinforcementRole"; case 4: return "SectionDefinition"; case 5: return "CrossSectionReinforcementDefinitions"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8931,7 +9389,7 @@ public: /// IfcRepresentationMap's that are used by an /// IfcTypeProduct through the /// RepresentationMaps attribute. -class IfcShapeAspect : public IfcBaseClass { +class IfcShapeAspect : public IfcBaseEntity { public: /// 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 @@ -8951,6 +9409,10 @@ public: bool ProductDefinitional(); /// Reference to the product definition shape of which this class is an aspect. IfcProductDefinitionShape* PartOfProductDefinitionShape(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return STRING; case 2: return STRING; case 3: return BOOL; case 4: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ShapeRepresentations"; case 1: return "Name"; case 2: return "Description"; case 3: return "ProductDefinitional"; case 4: return "PartOfProductDefinitionShape"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -8979,6 +9441,10 @@ public: /// HISTORY  New entity in IFC2x3. class IfcShapeModel : public IfcRepresentation { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRepresentation::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRepresentation::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > OfShapeAspect(); // INVERSE IfcShapeAspect::ShapeRepresentations bool is(Type::Enum v) const; Type::Enum type() const; @@ -9125,6 +9591,10 @@ public: /// IFC2x4 CHANGE  The RepresentationType's 'Curve3D', 'Surface2D', 'Surface3D', 'AdvancedBrep', 'LightSource', and the RepresentationIdentifier 'Lighting' have been added. class IfcShapeRepresentation : public IfcShapeModel { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcShapeModel::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcShapeModel::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9138,6 +9608,10 @@ public: /// HISTORY  New Entity in IFC Release 1.0, definition changed in IFC Release 2x. class IfcSimpleProperty : public IfcProperty { public: + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9149,12 +9623,16 @@ public: /// Definition from IAI: Describe more rarely needed connection properties. /// /// HISTORY: New entity in IFC 2x2. -class IfcStructuralConnectionCondition : public IfcBaseClass { +class IfcStructuralConnectionCondition : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcStructuralConnectionCondition bool hasName(); /// Optionally defines a name for this connection condition. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9166,12 +9644,16 @@ public: /// 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 IfcStructuralLoad : public IfcBaseClass { +class IfcStructuralLoad : public IfcBaseEntity { public: /// Whether the optional attribute Name is defined for this IfcStructuralLoad bool hasName(); /// Optionally defines a name for this load. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9185,6 +9667,10 @@ public: /// HISTORY: New entity in IFC 2x2. class IfcStructuralLoadStatic : public IfcStructuralLoad { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralLoad::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralLoad::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9209,6 +9695,10 @@ public: /// Whether the optional attribute DeltaT_Z is defined for this IfcStructuralLoadTemperature bool hasDeltaT_Z(); IfcThermodynamicTemperatureMeasure DeltaT_Z(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcStructuralLoadStatic::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "DeltaT_Constant"; case 2: return "DeltaT_Y"; case 3: return "DeltaT_Z"; } return IfcStructuralLoadStatic::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9224,6 +9714,10 @@ public: /// HISTORY  New entity in IFC2x3. class IfcStyleModel : public IfcRepresentation { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRepresentation::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRepresentation::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9279,6 +9773,10 @@ public: bool hasName(); /// The word, or group of words, by which the styled item is referred to. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return STRING; } return IfcRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Item"; case 1: return "Styles"; case 2: return "Name"; } return IfcRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9296,6 +9794,10 @@ public: /// HISTORY  New entity in IFC2x2. class IfcStyledRepresentation : public IfcStyleModel { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStyleModel::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStyleModel::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9317,6 +9819,10 @@ public: IfcSurfaceSide::IfcSurfaceSide Side(); /// A collection of different surface styles. SHARED_PTR< IfcTemplatedEntityList > Styles(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENUMERATION; case 2: return ENTITY_LIST; } return IfcPresentationStyle::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Side"; case 2: return "Styles"; } return IfcPresentationStyle::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9336,7 +9842,7 @@ 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 IfcSurfaceStyleLighting : public IfcBaseClass { +class IfcSurfaceStyleLighting : public IfcBaseEntity { public: /// 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. @@ -9350,6 +9856,10 @@ public: /// 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. IfcColourRgb* ReflectanceColour(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENTITY; case 3: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "DiffuseTransmissionColour"; case 1: return "DiffuseReflectionColour"; case 2: return "TransmissionColour"; case 3: return "ReflectanceColour"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9363,7 +9873,7 @@ public: /// 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 IfcSurfaceStyleRefraction : public IfcBaseClass { +class IfcSurfaceStyleRefraction : public IfcBaseEntity { public: /// Whether the optional attribute RefractionIndex is defined for this IfcSurfaceStyleRefraction bool hasRefractionIndex(); @@ -9373,6 +9883,10 @@ public: bool hasDispersionFactor(); /// 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. IfcReal DispersionFactor(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RefractionIndex"; case 1: return "DispersionFactor"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9388,10 +9902,14 @@ 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 IfcSurfaceStyleShading : public IfcBaseClass { +class IfcSurfaceStyleShading : public IfcBaseEntity { public: /// The colour used to render the surface. The surface colour for visualisation is defined by specifying the intensity of red, green and blue. IfcColourRgb* SurfaceColour(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SurfaceColour"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9418,10 +9936,14 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  inverse attribute HasTextureCoordinates deleted. -class IfcSurfaceStyleWithTextures : public IfcBaseClass { +class IfcSurfaceStyleWithTextures : public IfcBaseEntity { public: /// The textures applied to the surface. In case of more than one surface texture is included, the IfcSurfaceStyleWithTexture defines a multi texture. SHARED_PTR< IfcTemplatedEntityList > Textures(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Textures"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9522,7 +10044,7 @@ public: /// HISTORY  New entity in IFC 2x2. /// /// IFC2x4 CHANGE  Attribute TextureType replaces by Mode, attributes Parameter and MapsTo aded, new inverse attribute UsedInStyle. -class IfcSurfaceTexture : public IfcBaseClass { +class IfcSurfaceTexture : public IfcBaseEntity { public: /// 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(); @@ -9535,6 +10057,10 @@ public: /// /// Mirroring is not allowed to be used in the IfcCarteesianTransformationOperator IfcCartesianTransformationOperator2D* TextureTransform(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return BOOL; case 1: return BOOL; case 2: return ENUMERATION; case 3: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RepeatS"; case 1: return "RepeatT"; case 2: return "TextureType"; case 3: return "TextureTransform"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9552,6 +10078,10 @@ class IfcSymbolStyle : public IfcPresentationStyle { public: /// The style applied to the symbol for its visual appearance. IfcSymbolStyleSelect StyleOfSymbol(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; } return IfcPresentationStyle::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "StyleOfSymbol"; } return IfcPresentationStyle::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9575,12 +10105,16 @@ public: /// HISTORY  New entity in IFC R1.5. /// /// IFC2x4 CHANGE  Columns attribute added. -class IfcTable : public IfcBaseClass { +class IfcTable : public IfcBaseEntity { public: /// A unique name which is intended to describe the usage of the Table. std::string Name(); /// Reference to information content of rows. SHARED_PTR< IfcTemplatedEntityList > Rows(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Rows"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9602,12 +10136,16 @@ public: /// Figure 338 — Table row use alternative /// /// HISTORY  New entity in IFC R1.5. -class IfcTableRow : public IfcBaseClass { +class IfcTableRow : public IfcBaseEntity { public: /// The data value of the table cell.. SHARED_PTR< IfcTemplatedEntityList > RowCells(); /// 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. bool IsHeading(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return BOOL; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RowCells"; case 1: return "IsHeading"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > OfTable(); // INVERSE IfcTable::Rows bool is(Type::Enum v) const; Type::Enum type() const; @@ -9648,6 +10186,10 @@ public: /// 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. IfcLabel WWWHomePageURL(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return VECTOR_STRING; case 4: return VECTOR_STRING; case 5: return STRING; case 6: return VECTOR_STRING; case 7: return STRING; } return IfcAddress::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "TelephoneNumbers"; case 4: return "FacsimileNumbers"; case 5: return "PagerNumber"; case 6: return "ElectronicMailAddresses"; case 7: return "WWWHomePageURL"; } return IfcAddress::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9702,6 +10244,10 @@ public: /// /// IFC2x Edition 2 Addendum 2 CHANGE The attribute TextFontStyle is a new attribute attached to IfcTextStyle. IfcTextFontSelect TextFontStyle(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; case 2: return ENTITY; case 3: return ENTITY; } return IfcPresentationStyle::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "TextCharacterAppearance"; case 2: return "TextStyle"; case 3: return "TextFontStyle"; } return IfcPresentationStyle::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9798,6 +10344,10 @@ public: /// The font size provides the size or height of the text font. /// NOTE  The following values are allowed, getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9823,7 +10373,7 @@ public: /// HISTORY  New entity in IFC2x3. /// /// IFC2x3 CHANGE  The IfcTextStyleForDefinedFont has been added and replaces IfcColour at the IfcCharacterStyleSelect. -class IfcTextStyleForDefinedFont : public IfcBaseClass { +class IfcTextStyleForDefinedFont : public IfcBaseEntity { public: /// This property describes the text color of an element (often referred to as the foreground color). IfcColour Colour(); @@ -9831,6 +10381,10 @@ public: bool hasBackgroundColour(); /// This property sets the background color of an element. IfcColour BackgroundColour(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Colour"; case 1: return "BackgroundColour"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9846,7 +10400,7 @@ 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 IfcTextStyleTextModel : public IfcBaseClass { +class IfcTextStyleTextModel : public IfcBaseEntity { public: /// Whether the optional attribute TextIndent is defined for this IfcTextStyleTextModel bool hasTextIndent(); @@ -9883,6 +10437,10 @@ public: /// 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. IfcSizeSelect LineHeight(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return STRING; case 2: return STRING; case 3: return ENTITY; case 4: return ENTITY; case 5: return STRING; case 6: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "TextIndent"; case 1: return "TextAlign"; case 2: return "TextDecoration"; case 3: return "LetterSpacing"; case 4: return "WordSpacing"; case 5: return "TextTransform"; case 6: return "LineHeight"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9908,7 +10466,7 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The attribute item CharacterSpacing has been added. -class IfcTextStyleWithBoxCharacteristics : public IfcBaseClass { +class IfcTextStyleWithBoxCharacteristics : public IfcBaseEntity { public: /// Whether the optional attribute BoxHeight is defined for this IfcTextStyleWithBoxCharacteristics bool hasBoxHeight(); @@ -9930,6 +10488,10 @@ public: bool hasCharacterSpacing(); /// The distance between the character boxes of adjacent characters. IfcSizeSelect CharacterSpacing(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BoxHeight"; case 1: return "BoxWidth"; case 2: return "BoxSlantAngle"; case 3: return "BoxRotateAngle"; case 4: return "CharacterSpacing"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -9949,8 +10511,12 @@ public: /// IFC2x3 CHANGE  The attribute Texture is deleted. /// /// IFC2x4 CHANGE  The inverse attribute AnnotatedSurface is deleted, and the inverse AppliesTextures is added. -class IfcTextureCoordinate : public IfcBaseClass { +class IfcTextureCoordinate : public IfcBaseEntity { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > AnnotatedSurface(); // INVERSE IfcAnnotationSurface::TextureCoordinates bool is(Type::Enum v) const; Type::Enum type() const; @@ -9996,6 +10562,10 @@ public: /// /// IFC2x4 CHANGE  Made optional data type restricted to REAL. SHARED_PTR< IfcTemplatedEntityList > Parameter(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY_LIST; } return IfcTextureCoordinate::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Mode"; case 1: return "Parameter"; } return IfcTextureCoordinate::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10058,6 +10628,10 @@ public: class IfcTextureMap : public IfcTextureCoordinate { public: SHARED_PTR< IfcTemplatedEntityList > TextureMaps(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcTextureCoordinate::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "TextureMaps"; } return IfcTextureCoordinate::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10093,10 +10667,14 @@ 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 IfcTextureVertex : public IfcBaseClass { +class IfcTextureVertex : public IfcBaseEntity { public: /// The first coordinate[1] is the S, the second coordinate[2] is the T parameter value. std::vector /*[2:2]*/ Coordinates(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return VECTOR_DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Coordinates"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10119,6 +10697,10 @@ public: /// Whether the optional attribute ThermalConductivity is defined for this IfcThermalMaterialProperties bool hasThermalConductivity(); IfcThermalConductivityMeasure ThermalConductivity(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "SpecificHeatCapacity"; case 2: return "BoilingPoint"; case 3: return "FreezingPoint"; case 4: return "ThermalConductivity"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10132,7 +10714,7 @@ public: /// 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 IfcTimeSeries : public IfcBaseClass { +class IfcTimeSeries : public IfcBaseEntity { public: /// An unique name for the time series. IfcLabel Name(); @@ -10156,6 +10738,10 @@ public: bool hasUnit(); /// 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. IfcUnit Unit(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return STRING; case 2: return ENTITY; case 3: return ENTITY; case 4: return ENUMERATION; case 5: return ENUMERATION; case 6: return STRING; case 7: return ENTITY; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "Description"; case 2: return "StartTime"; case 3: return "EndTime"; case 4: return "TimeSeriesDataType"; case 5: return "DataOrigin"; case 6: return "UserDefinedDataOrigin"; case 7: return "Unit"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > DocumentedBy(); // INVERSE IfcTimeSeriesReferenceRelationship::ReferencedTimeSeries bool is(Type::Enum v) const; Type::Enum type() const; @@ -10165,10 +10751,14 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcTimeSeriesReferenceRelationship : public IfcBaseClass { +class IfcTimeSeriesReferenceRelationship : public IfcBaseEntity { public: IfcTimeSeries* ReferencedTimeSeries(); SHARED_PTR< IfcTemplatedEntityList > TimeSeriesReferences(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ReferencedTimeSeries"; case 1: return "TimeSeriesReferences"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10186,10 +10776,14 @@ public: /// Figure 241 — Time series value /// /// HISTORY  New entity in IFC2x2. -class IfcTimeSeriesValue : public IfcBaseClass { +class IfcTimeSeriesValue : public IfcBaseEntity { public: /// A list of time-series values. At least one value is required. SHARED_PTR< IfcTemplatedEntityList > ListValues(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "ListValues"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10205,6 +10799,10 @@ public: /// HISTORY: New entity in IFC Release 1.5 class IfcTopologicalRepresentationItem : public IfcRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10249,6 +10847,10 @@ public: /// HISTORY: New entity in IFC 2x2. class IfcTopologyRepresentation : public IfcShapeModel { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcShapeModel::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcShapeModel::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10262,10 +10864,14 @@ public: /// 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 IfcUnitAssignment : public IfcBaseClass { +class IfcUnitAssignment : public IfcBaseEntity { public: /// Units to be included within a unit assignment. SHARED_PTR< IfcTemplatedEntityList > Units(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Units"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10286,6 +10892,10 @@ public: /// The extent of a vertex is defined to be zero. class IfcVertex : public IfcTopologicalRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcTopologicalRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcTopologicalRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10294,10 +10904,14 @@ public: typedef SHARED_PTR< IfcTemplatedEntityList > list; typedef IfcTemplatedEntityList::it it; }; -class IfcVertexBasedTextureMap : public IfcBaseClass { +class IfcVertexBasedTextureMap : public IfcBaseEntity { public: SHARED_PTR< IfcTemplatedEntityList > TextureVertices(); SHARED_PTR< IfcTemplatedEntityList > TexturePoints(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return ENTITY_LIST; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "TextureVertices"; case 1: return "TexturePoints"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10319,6 +10933,10 @@ class IfcVertexPoint : public IfcVertex { public: /// The geometric point, which defines the position in geometric space of the vertex. IfcPoint* VertexGeometry(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcVertex::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "VertexGeometry"; } return IfcVertex::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10386,12 +11004,16 @@ public: /// OffsetDistances[1] is a negative length measure /// /// Figure 248 — Virtual grid intersection negative offset -class IfcVirtualGridIntersection : public IfcBaseClass { +class IfcVirtualGridIntersection : public IfcBaseEntity { public: /// 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. SHARED_PTR< IfcTemplatedEntityList > IntersectingAxes(); /// 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 /*[2:3]*/ OffsetDistances(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return VECTOR_DOUBLE; } throw IfcException("argument out of range"); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "IntersectingAxes"; case 1: return "OffsetDistances"; } throw IfcException("argument out of range"); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10423,6 +11045,10 @@ public: /// Whether the optional attribute DissolvedSolidsContent is defined for this IfcWaterProperties bool hasDissolvedSolidsContent(); IfcNormalisedRatioMeasure DissolvedSolidsContent(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return BOOL; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "IsPotable"; case 2: return "Hardness"; case 3: return "AlkalinityConcentration"; case 4: return "AcidityConcentration"; case 5: return "ImpuritiesContent"; case 6: return "PHLevel"; case 7: return "DissolvedSolidsContent"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10433,6 +11059,10 @@ public: }; class IfcAnnotationOccurrence : public IfcStyledItem { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStyledItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStyledItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10443,6 +11073,10 @@ public: }; class IfcAnnotationSurfaceOccurrence : public IfcAnnotationOccurrence { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10453,6 +11087,10 @@ public: }; class IfcAnnotationSymbolOccurrence : public IfcAnnotationOccurrence { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10463,6 +11101,10 @@ public: }; class IfcAnnotationTextOccurrence : public IfcAnnotationOccurrence { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10493,6 +11135,10 @@ class IfcArbitraryClosedProfileDef : public IfcProfileDef { public: /// Bounded curve, defining the outer boundaries of the arbitrary profile. IfcCurve* OuterCurve(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "OuterCurve"; } return IfcProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10520,6 +11166,10 @@ class IfcArbitraryOpenProfileDef : public IfcProfileDef { public: /// Open bounded curve defining the profile. IfcBoundedCurve* Curve(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Curve"; } return IfcProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10551,6 +11201,10 @@ class IfcArbitraryProfileDefWithVoids : public IfcArbitraryClosedProfileDef { public: /// Set of bounded curves, defining the inner boundaries of the arbitrary profile. SHARED_PTR< IfcTemplatedEntityList > InnerCurves(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return ENTITY_LIST; } return IfcArbitraryClosedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "InnerCurves"; } return IfcArbitraryClosedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10574,6 +11228,10 @@ public: IfcIdentifier RasterFormat(); /// 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. bool RasterCode(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return STRING; case 5: return BOOL; } return IfcSurfaceTexture::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RasterFormat"; case 5: return "RasterCode"; } return IfcSurfaceTexture::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10615,6 +11273,10 @@ class IfcCenterLineProfileDef : public IfcArbitraryOpenProfileDef { public: /// Constant thickness applied along the center line. IfcPositiveLengthMeasure Thickness(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcArbitraryOpenProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Thickness"; } return IfcArbitraryOpenProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10650,6 +11312,10 @@ public: bool hasReferencedSource(); /// The classification system or source that is referenced. IfcClassification* ReferencedSource(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return ENTITY; } return IfcExternalReference::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "ReferencedSource"; } return IfcExternalReference::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10680,6 +11346,10 @@ public: /// /// NOTE  The colour component value is given within the range of 0..1, and not within the range of 0..255 as otherwise usual. IfcNormalisedRatioMeasure Blue(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcColourSpecification::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Red"; case 2: return "Green"; case 3: return "Blue"; } return IfcColourSpecification::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10700,6 +11370,10 @@ public: IfcIdentifier UsageName(); /// Set of properties that can be used within this complex property (may include other complex properties). SHARED_PTR< IfcTemplatedEntityList > HasProperties(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return STRING; case 3: return ENTITY_LIST; } return IfcProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "UsageName"; case 3: return "HasProperties"; } return IfcProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10752,6 +11426,10 @@ public: bool hasLabel(); /// 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. IfcLabel Label(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY_LIST; case 3: return STRING; } return IfcProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Profiles"; case 3: return "Label"; } return IfcProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10773,6 +11451,10 @@ class IfcConnectedFaceSet : public IfcTopologicalRepresentationItem { public: /// The set of faces arcwise connected along common edges or vertices. SHARED_PTR< IfcTemplatedEntityList > CfsFaces(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcTopologicalRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "CfsFaces"; } return IfcTopologicalRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10802,6 +11484,10 @@ public: bool hasCurveOnRelatedElement(); /// 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. IfcCurveOrEdgeCurve CurveOnRelatedElement(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcConnectionGeometry::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "CurveOnRelatingElement"; case 1: return "CurveOnRelatedElement"; } return IfcConnectionGeometry::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10843,6 +11529,10 @@ public: bool hasEccentricityInZ(); /// Distance in z direction between the two points (or vertex points) engaged in the point connection. IfcLengthMeasure EccentricityInZ(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; } return IfcConnectionPointGeometry::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "EccentricityInX"; case 3: return "EccentricityInY"; case 4: return "EccentricityInZ"; } return IfcConnectionPointGeometry::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10862,6 +11552,10 @@ class IfcContextDependentUnit : public IfcNamedUnit { public: /// The word, or group of words, by which the context dependent unit is referred to. IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return STRING; } return IfcNamedUnit::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Name"; } return IfcNamedUnit::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10923,6 +11617,10 @@ public: IfcLabel Name(); /// The physical quantity from which the converted unit is derived. IfcMeasureWithUnit* ConversionFactor(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return STRING; case 3: return ENTITY; } return IfcNamedUnit::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Name"; case 3: return "ConversionFactor"; } return IfcNamedUnit::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -10962,6 +11660,10 @@ public: bool hasCurveColour(); /// 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. IfcColour CurveColour(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; case 2: return ENTITY; case 3: return ENTITY; } return IfcPresentationStyle::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "CurveFont"; case 2: return "CurveWidth"; case 3: return "CurveColour"; } return IfcPresentationStyle::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11064,6 +11766,10 @@ public: bool hasLabel(); /// 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. IfcLabel Label(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return ENTITY; case 4: return STRING; } return IfcProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "ParentProfile"; case 3: return "Operator"; case 4: return "Label"; } return IfcProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11074,6 +11780,10 @@ public: }; class IfcDimensionCalloutRelationship : public IfcDraughtingCalloutRelationship { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDraughtingCalloutRelationship::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDraughtingCalloutRelationship::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11084,6 +11794,10 @@ public: }; class IfcDimensionPair : public IfcDraughtingCalloutRelationship { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDraughtingCalloutRelationship::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDraughtingCalloutRelationship::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11105,6 +11819,10 @@ public: /// Modified in IFC 2x. class IfcDocumentReference : public IfcExternalReference { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcExternalReference::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ReferenceToDocument(); // INVERSE IfcDocumentInformation::DocumentReferences bool is(Type::Enum v) const; Type::Enum type() const; @@ -11126,6 +11844,10 @@ public: /// HISTORY  New entity in IFC2x2. class IfcDraughtingPreDefinedTextFont : public IfcPreDefinedTextFont { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedTextFont::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedTextFont::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11189,6 +11911,10 @@ public: IfcVertex* EdgeStart(); /// End point (vertex) of the edge. The same vertex can be used for both EdgeStart and EdgeEnd. IfcVertex* EdgeEnd(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcTopologicalRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "EdgeStart"; case 1: return "EdgeEnd"; } return IfcTopologicalRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11236,6 +11962,10 @@ public: IfcCurve* EdgeGeometry(); /// 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(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return BOOL; } return IfcEdge::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "EdgeGeometry"; case 3: return "SameSense"; } return IfcEdge::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11286,6 +12016,10 @@ public: bool hasDescription(); IfcText Description(); IfcLabel Name(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY_LIST; case 2: return STRING; case 3: return STRING; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "ExtendedProperties"; case 2: return "Description"; case 3: return "Name"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11342,6 +12076,10 @@ class IfcFace : public IfcTopologicalRepresentationItem { public: /// Boundaries of the face. SHARED_PTR< IfcTemplatedEntityList > Bounds(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcTopologicalRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Bounds"; } return IfcTopologicalRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11361,6 +12099,10 @@ public: IfcLoop* Bound(); /// 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(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return BOOL; } return IfcTopologicalRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Bound"; case 1: return "Orientation"; } return IfcTopologicalRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11376,6 +12118,10 @@ public: /// HISTORY New class in IFC Release 1.0 class IfcFaceOuterBound : public IfcFaceBound { public: + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcFaceBound::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcFaceBound::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11426,6 +12172,10 @@ public: IfcSurface* FaceSurface(); /// 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(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; case 2: return BOOL; } return IfcFace::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "FaceSurface"; case 2: return "SameSense"; } return IfcFace::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11467,6 +12217,10 @@ public: bool hasCompressionFailureZ(); /// Compression force in z-direction leading to failure of the connection. IfcForceMeasure CompressionFailureZ(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcStructuralConnectionCondition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "TensionFailureX"; case 2: return "TensionFailureY"; case 3: return "TensionFailureZ"; case 4: return "CompressionFailureX"; case 5: return "CompressionFailureY"; case 6: return "CompressionFailureZ"; } return IfcStructuralConnectionCondition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11513,6 +12267,10 @@ class IfcFillAreaStyle : public IfcPresentationStyle { public: /// The set of fill area styles to use in presenting visible curve segments, annotation fill areas or surfaces. SHARED_PTR< IfcTemplatedEntityList > FillStyles(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY_LIST; } return IfcPresentationStyle::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "FillStyles"; } return IfcPresentationStyle::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11535,6 +12293,10 @@ public: /// Whether the optional attribute HigherHeatingValue is defined for this IfcFuelProperties bool hasHigherHeatingValue(); IfcHeatingValueMeasure HigherHeatingValue(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "CombustionTemperature"; case 2: return "CarbonContent"; case 3: return "LowerHeatingValue"; case 4: return "HigherHeatingValue"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11554,6 +12316,10 @@ public: /// Whether the optional attribute MassDensity is defined for this IfcGeneralMaterialProperties bool hasMassDensity(); IfcMassDensityMeasure MassDensity(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "MolecularWeight"; case 2: return "Porosity"; case 3: return "MassDensity"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11579,6 +12345,10 @@ public: /// Whether the optional attribute CrossSectionArea is defined for this IfcGeneralProfileProperties bool hasCrossSectionArea(); IfcAreaMeasure CrossSectionArea(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcProfileProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "PhysicalWeight"; case 3: return "Perimeter"; case 4: return "MinimumPlateThickness"; case 5: return "MaximumPlateThickness"; case 6: return "CrossSectionArea"; } return IfcProfileProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11650,6 +12420,10 @@ public: bool hasTrueNorth(); /// 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. IfcDirection* TrueNorth(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return INT; case 3: return DOUBLE; case 4: return ENTITY; case 5: return ENTITY; } return IfcRepresentationContext::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "CoordinateSpaceDimension"; case 3: return "Precision"; case 4: return "WorldCoordinateSystem"; case 5: return "TrueNorth"; } return IfcRepresentationContext::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasSubContexts(); // INVERSE IfcGeometricRepresentationSubContext::ParentContext bool is(Type::Enum v) const; Type::Enum type() const; @@ -11680,6 +12454,10 @@ public: /// HISTORY: New entity in IFC Release 1.5 class IfcGeometricRepresentationItem : public IfcRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11725,6 +12503,10 @@ public: bool hasUserDefinedTargetView(); /// User defined target view, this attribute value shall be given, if the TargetView attribute is set to USERDEFINED. IfcLabel UserDefinedTargetView(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY; case 7: return DOUBLE; case 8: return ENUMERATION; case 9: return STRING; } return IfcGeometricRepresentationContext::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "ParentContext"; case 7: return "TargetScale"; case 8: return "TargetView"; case 9: return "UserDefinedTargetView"; } return IfcGeometricRepresentationContext::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11744,6 +12526,10 @@ class IfcGeometricSet : public IfcGeometricRepresentationItem { public: /// 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. SHARED_PTR< IfcTemplatedEntityList > Elements(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Elements"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11807,6 +12593,10 @@ public: /// /// IFC2x4 CHANGE The select of an explict direction has been added. IfcVirtualGridIntersection* PlacementRefDirection(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcObjectPlacement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "PlacementLocation"; case 1: return "PlacementRefDirection"; } return IfcObjectPlacement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11836,6 +12626,10 @@ public: IfcSurface* BaseSurface(); /// 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(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return BOOL; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BaseSurface"; case 1: return "AgreementFlag"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11861,6 +12655,10 @@ public: /// Whether the optional attribute MoistureDiffusivity is defined for this IfcHygroscopicMaterialProperties bool hasMoistureDiffusivity(); IfcMoistureDiffusivityMeasure MoistureDiffusivity(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; } return IfcMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "UpperVaporResistanceFactor"; case 2: return "LowerVaporResistanceFactor"; case 3: return "IsothermalMoistureCapacity"; case 4: return "VaporPermeability"; case 5: return "MoistureDiffusivity"; } return IfcMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11907,6 +12705,10 @@ public: class IfcImageTexture : public IfcSurfaceTexture { public: IfcIdentifier UrlReference(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return STRING; } return IfcSurfaceTexture::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "UrlReference"; } return IfcSurfaceTexture::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11924,6 +12726,10 @@ class IfcIrregularTimeSeries : public IfcTimeSeries { public: /// The collection of time series values. SHARED_PTR< IfcTemplatedEntityList > Values(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENTITY_LIST; } return IfcTimeSeries::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "Values"; } return IfcTimeSeries::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11956,6 +12762,10 @@ public: bool hasIntensity(); /// 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). IfcNormalisedRatioMeasure Intensity(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Name"; case 1: return "LightColour"; case 2: return "AmbientIntensity"; case 3: return "Intensity"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11973,6 +12783,10 @@ public: /// HISTORY: This is a new entity in IFC 2x, renamed and enhanced in IFC2x2. class IfcLightSourceAmbient : public IfcLightSource { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcLightSource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcLightSource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -11995,6 +12809,10 @@ public: /// 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. IfcDirection* Orientation(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; } return IfcLightSource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "Orientation"; } return IfcLightSource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12026,6 +12844,10 @@ public: IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum LightEmissionSource(); /// The data source from which light distribution data is obtained. IfcLightDistributionDataSourceSelect LightDistributionDataSource(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return ENUMERATION; case 9: return ENTITY; } return IfcLightSource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "Position"; case 5: return "ColourAppearance"; case 6: return "ColourTemperature"; case 7: return "LuminousFlux"; case 8: return "LightEmissionSource"; case 9: return "LightDistributionDataSource"; } return IfcLightSource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12063,6 +12885,10 @@ public: IfcReal DistanceAttenuation(); /// 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. IfcReal QuadricAttenuation(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; } return IfcLightSource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "Position"; case 5: return "Radius"; case 6: return "ConstantAttenuation"; case 7: return "DistanceAttenuation"; case 8: return "QuadricAttenuation"; } return IfcLightSource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12101,6 +12927,10 @@ public: IfcPositivePlaneAngleMeasure SpreadAngle(); /// 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). IfcPositivePlaneAngleMeasure BeamWidthAngle(); + virtual unsigned int getArgumentCount() const { return 13; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENTITY; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; } return IfcLightSourcePositional::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "Orientation"; case 10: return "ConcentrationExponent"; case 11: return "SpreadAngle"; case 12: return "BeamWidthAngle"; } return IfcLightSourcePositional::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12169,6 +12999,10 @@ public: IfcObjectPlacement* PlacementRelTo(); /// 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. IfcAxis2Placement RelativePlacement(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcObjectPlacement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "PlacementRelTo"; case 1: return "RelativePlacement"; } return IfcObjectPlacement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12205,6 +13039,10 @@ public: /// and end vertices. class IfcLoop : public IfcTopologicalRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcTopologicalRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcTopologicalRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12238,6 +13076,10 @@ public: IfcRepresentationMap* MappingSource(); /// A representation item that is the target onto which the mapping source is mapped. It is constraint to be a Cartesian transformation operator. IfcCartesianTransformationOperator* MappingTarget(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "MappingSource"; case 1: return "MappingTarget"; } return IfcRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12280,6 +13122,10 @@ class IfcMaterialDefinitionRepresentation : public IfcProductRepresentation { public: /// Reference to the material to which the representation applies. IfcMaterial* RepresentedMaterial(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return ENTITY; } return IfcProductRepresentation::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "RepresentedMaterial"; } return IfcProductRepresentation::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12308,6 +13154,10 @@ public: /// Whether the optional attribute WaterImpermeability is defined for this IfcMechanicalConcreteMaterialProperties bool hasWaterImpermeability(); IfcText WaterImpermeability(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return DOUBLE; case 7: return DOUBLE; case 8: return STRING; case 9: return STRING; case 10: return DOUBLE; case 11: return STRING; } return IfcMechanicalMaterialProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "CompressiveStrength"; case 7: return "MaxAggregateSize"; case 8: return "AdmixturesDescription"; case 9: return "Workability"; case 10: return "ProtectivePoreRatio"; case 11: return "WaterImpermeability"; } return IfcMechanicalMaterialProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12368,6 +13218,10 @@ public: /// 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 IfcObjectDefinition : public IfcRoot { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRoot::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRoot::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasAssignments(); // INVERSE IfcRelAssigns::RelatedObjects SHARED_PTR< IfcTemplatedEntityList > IsDecomposedBy(); // INVERSE IfcRelDecomposes::RelatingObject SHARED_PTR< IfcTemplatedEntityList > Decomposes(); // INVERSE IfcRelDecomposes::RelatedObjects @@ -12391,6 +13245,10 @@ class IfcOneDirectionRepeatFactor : public IfcGeometricRepresentationItem { public: /// A vector which specifies the relative positioning of hatch lines. IfcVector* RepeatFactor(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "RepeatFactor"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12460,6 +13318,10 @@ public: /// 10303-42:1994, p.148 for the equation. class IfcOpenShell : public IfcConnectedFaceSet { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcConnectedFaceSet::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcConnectedFaceSet::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12481,6 +13343,10 @@ public: IfcEdge* EdgeElement(); /// 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(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return BOOL; } return IfcEdge::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "EdgeElement"; case 3: return "Orientation"; } return IfcEdge::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12535,6 +13401,10 @@ class IfcParameterizedProfileDef : public IfcProfileDef { public: /// Position coordinate system of the parameterized profile definition. If unspecified, no translation and no rotation is applied. IfcAxis2Placement2D* Position(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Position"; } return IfcProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12561,6 +13431,10 @@ class IfcPath : public IfcTopologicalRepresentationItem { public: /// The list of oriented edges which are concatenated together to form this path. SHARED_PTR< IfcTemplatedEntityList > EdgeList(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcTopologicalRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "EdgeList"; } return IfcTopologicalRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12592,6 +13466,10 @@ public: bool hasUsage(); /// Additional indication of a usage type of the quantities that are grouped under this physical complex quantity. IfcLabel Usage(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY_LIST; case 3: return STRING; case 4: return STRING; case 5: return STRING; } return IfcPhysicalQuantity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "HasQuantities"; case 3: return "Discrimination"; case 4: return "Quality"; case 5: return "Usage"; } return IfcPhysicalQuantity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12630,6 +13508,10 @@ public: /// /// IFC2x Edition 3 CHANGE  The data type has been changed from STRING to BINARY. std::vector /*[1:?]*/ Pixel(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return INT; case 5: return INT; case 6: return INT; case 7: return UNKNOWN; } return IfcSurfaceTexture::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "Width"; case 5: return "Height"; case 6: return "ColourComponents"; case 7: return "Pixel"; } return IfcSurfaceTexture::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12651,6 +13533,10 @@ class IfcPlacement : public IfcGeometricRepresentationItem { public: /// The geometric position of a reference point, such as the center of a circle, of the item to be located. IfcCartesianPoint* Location(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Location"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12670,6 +13556,10 @@ public: IfcLengthMeasure SizeInX(); /// The extent in the direction of the y-axis. IfcLengthMeasure SizeInY(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return DOUBLE; case 1: return DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SizeInX"; case 1: return "SizeInY"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12685,6 +13575,10 @@ public: /// HISTORY: New entity in IFC Release 1.5 class IfcPoint : public IfcGeometricRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12708,6 +13602,10 @@ public: IfcCurve* BasisCurve(); /// The parameter value of the point location. IfcParameterValue PointParameter(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; } return IfcPoint::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BasisCurve"; case 1: return "PointParameter"; } return IfcPoint::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12733,6 +13631,10 @@ public: IfcParameterValue PointParameterU(); /// The second parameter value of the point location. IfcParameterValue PointParameterV(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; case 2: return DOUBLE; } return IfcPoint::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BasisSurface"; case 1: return "PointParameterU"; case 2: return "PointParameterV"; } return IfcPoint::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12784,6 +13686,10 @@ class IfcPolyLoop : public IfcLoop { public: /// List of points defining the loop. There are no repeated points in the list. SHARED_PTR< IfcTemplatedEntityList > Polygon(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcLoop::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Polygon"; } return IfcLoop::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12856,6 +13762,10 @@ public: /// /// IFC2x Edition 3 CHANGE  The attribute type has been changed from IfcPolyline to its supertype IfcBoundedCurve with upward compatibility for file based exchange. IfcBoundedCurve* PolygonalBoundary(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return ENTITY; } return IfcHalfSpaceSolid::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Position"; case 3: return "PolygonalBoundary"; } return IfcHalfSpaceSolid::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12871,6 +13781,10 @@ public: /// HISTORY  New entity in IFC2x2. class IfcPreDefinedColour : public IfcPreDefinedItem { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12888,6 +13802,10 @@ public: /// HISTORY: New entity in IFC2x2. class IfcPreDefinedCurveFont : public IfcPreDefinedItem { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12898,6 +13816,10 @@ public: }; class IfcPreDefinedDimensionSymbol : public IfcPreDefinedSymbol { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedSymbol::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedSymbol::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12908,6 +13830,10 @@ public: }; class IfcPreDefinedPointMarkerSymbol : public IfcPreDefinedSymbol { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedSymbol::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedSymbol::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -12930,6 +13856,10 @@ public: /// HISTORY  New Entity in IFC Release 1.5 class IfcProductDefinitionShape : public IfcProductRepresentation { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcProductRepresentation::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcProductRepresentation::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ShapeOfProduct(); // INVERSE IfcProduct::Representation SHARED_PTR< IfcTemplatedEntityList > HasShapeAspects(); // INVERSE IfcShapeAspect::PartOfProductDefinitionShape bool is(Type::Enum v) const; @@ -13058,6 +13988,10 @@ public: bool hasUnit(); /// 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) IfcUnit Unit(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return ENTITY; case 4: return ENTITY; } return IfcSimpleProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "UpperBoundValue"; case 3: return "LowerBoundValue"; case 4: return "Unit"; } return IfcSimpleProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13118,6 +14052,10 @@ public: /// IfcPropertyTemplateDefinition for details. class IfcPropertyDefinition : public IfcRoot { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRoot::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRoot::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasAssociations(); // INVERSE IfcRelAssociates::RelatedObjects bool is(Type::Enum v) const; Type::Enum type() const; @@ -13214,6 +14152,10 @@ public: bool hasEnumerationReference(); /// Enumeration from which a enumeration value has been selected. The referenced enumeration also establishes the unit of the enumeration value. IfcPropertyEnumeration* EnumerationReference(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY_LIST; case 3: return ENTITY; } return IfcSimpleProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "EnumerationValues"; case 3: return "EnumerationReference"; } return IfcSimpleProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13297,6 +14239,10 @@ public: bool hasUnit(); /// 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. IfcUnit Unit(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY_LIST; case 3: return ENTITY; } return IfcSimpleProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "ListValues"; case 3: return "Unit"; } return IfcSimpleProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13330,6 +14276,10 @@ public: /// /// IFC2x4 CHANGE  The attribute has been made optional with upward compatibility for file based exchange. IfcObjectReferenceSelect PropertyReference(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return STRING; case 3: return ENTITY; } return IfcSimpleProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "UsageName"; case 3: return "PropertyReference"; } return IfcSimpleProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13382,6 +14332,10 @@ public: /// NOTE  Properties assigned to object occurrences may override properties assigned to the object type. See IfcRelDefinesByType for further information. class IfcPropertySetDefinition : public IfcPropertyDefinition { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPropertyDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPropertyDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > PropertyDefinitionOf(); // INVERSE IfcRelDefinesByProperties::RelatingPropertyDefinition SHARED_PTR< IfcTemplatedEntityList > DefinesType(); // INVERSE IfcTypeObject::HasPropertySets bool is(Type::Enum v) const; @@ -13450,6 +14404,10 @@ public: bool hasUnit(); /// 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. IfcUnit Unit(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return ENTITY; } return IfcSimpleProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "NominalValue"; case 3: return "Unit"; } return IfcSimpleProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13626,6 +14584,10 @@ public: bool hasDefinedUnit(); /// 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. IfcUnit DefinedUnit(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY_LIST; case 3: return ENTITY_LIST; case 4: return STRING; case 5: return ENTITY; case 6: return ENTITY; } return IfcSimpleProperty::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "DefiningValues"; case 3: return "DefinedValues"; case 4: return "Expression"; case 5: return "DefiningUnit"; case 6: return "DefinedUnit"; } return IfcSimpleProperty::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13674,6 +14636,10 @@ public: IfcPositiveLengthMeasure XDim(); /// The extent of the rectangle in the direction of the y-axis. IfcPositiveLengthMeasure YDim(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "XDim"; case 4: return "YDim"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13693,6 +14659,10 @@ public: IfcTimeMeasure TimeStep(); /// The collection of time series values. SHARED_PTR< IfcTemplatedEntityList > Values(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return DOUBLE; case 9: return ENTITY_LIST; } return IfcTimeSeries::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "TimeStep"; case 9: return "Values"; } return IfcTimeSeries::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13735,6 +14705,10 @@ public: IfcLabel DefinitionType(); /// The list of section reinforcement properties attached to the reinforcement definition properties. SHARED_PTR< IfcTemplatedEntityList > ReinforcementSectionDefinitions(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return STRING; case 5: return ENTITY_LIST; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "DefinitionType"; case 5: return "ReinforcementSectionDefinitions"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13753,6 +14727,10 @@ public: /// HISTORY: New entity in IFC Release 1.0. class IfcRelationship : public IfcRoot { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRoot::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRoot::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13802,6 +14780,10 @@ class IfcRoundedRectangleProfileDef : public IfcRectangleProfileDef { public: /// Radius of the circular arcs by which all four corners of the rectangle are equally rounded. IfcPositiveLengthMeasure RoundingRadius(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return DOUBLE; } return IfcRectangleProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RoundingRadius"; } return IfcRectangleProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13871,6 +14853,10 @@ public: SHARED_PTR< IfcTemplatedEntityList > CrossSections(); /// 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. SHARED_PTR< IfcTemplatedEntityList > CrossSectionPositions(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return ENTITY_LIST; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SpineCurve"; case 1: return "CrossSections"; case 2: return "CrossSectionPositions"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13889,6 +14875,10 @@ public: /// Whether the optional attribute LowerValue is defined for this IfcServiceLifeFactor bool hasLowerValue(); IfcMeasureValue LowerValue(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENUMERATION; case 5: return ENTITY; case 6: return ENTITY; case 7: return ENTITY; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "PredefinedType"; case 5: return "UpperValue"; case 6: return "MostUsedValue"; case 7: return "LowerValue"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13912,6 +14902,10 @@ public: class IfcShellBasedSurfaceModel : public IfcGeometricRepresentationItem { public: SHARED_PTR< IfcTemplatedEntityList > SbsmBoundary(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SbsmBoundary"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13943,6 +14937,10 @@ public: bool hasSlippageZ(); /// Slippage in z-direction of the coordinate system defined by the instance which uses this resource object. IfcLengthMeasure SlippageZ(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcStructuralConnectionCondition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "SlippageX"; case 2: return "SlippageY"; case 3: return "SlippageZ"; } return IfcStructuralConnectionCondition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13958,6 +14956,10 @@ public: /// HISTORY: New entity in IFC Release 1.5 class IfcSolidModel : public IfcGeometricRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13973,6 +14975,10 @@ public: bool hasSoundScale(); IfcSoundScaleEnum::IfcSoundScaleEnum SoundScale(); SHARED_PTR< IfcTemplatedEntityList > SoundValues(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return BOOL; case 5: return ENUMERATION; case 6: return ENTITY_LIST; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "IsAttenuating"; case 5: return "SoundScale"; case 6: return "SoundValues"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -13990,6 +14996,10 @@ public: /// Whether the optional attribute SoundLevelSingleValue is defined for this IfcSoundValue bool hasSoundLevelSingleValue(); IfcDerivedMeasureValue SoundLevelSingleValue(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return DOUBLE; case 6: return ENTITY; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "SoundLevelTimeSeries"; case 5: return "Frequency"; case 6: return "SoundLevelSingleValue"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14022,6 +15032,10 @@ public: bool hasUserDefinedPropertySource(); IfcLabel UserDefinedPropertySource(); IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum ThermalLoadType(); + virtual unsigned int getArgumentCount() const { return 14; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return DOUBLE; case 5: return ENUMERATION; case 6: return ENUMERATION; case 7: return STRING; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return ENTITY; case 11: return STRING; case 12: return STRING; case 13: return ENUMERATION; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "ApplicableValueRatio"; case 5: return "ThermalLoadSource"; case 6: return "PropertySource"; case 7: return "SourceDescription"; case 8: return "MaximumValue"; case 9: return "MinimumValue"; case 10: return "ThermalLoadTimeSeriesValues"; case 11: return "UserDefinedThermalLoadSource"; case 12: return "UserDefinedPropertySource"; case 13: return "ThermalLoadType"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14061,6 +15075,10 @@ public: bool hasLinearMomentZ(); /// Linear moment about the z-axis. IfcLinearMomentMeasure LinearMomentZ(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcStructuralLoadStatic::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "LinearForceX"; case 2: return "LinearForceY"; case 3: return "LinearForceZ"; case 4: return "LinearMomentX"; case 5: return "LinearMomentY"; case 6: return "LinearMomentZ"; } return IfcStructuralLoadStatic::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14088,6 +15106,10 @@ public: bool hasPlanarForceZ(); /// Planar force value in z-direction. IfcPlanarForceMeasure PlanarForceZ(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcStructuralLoadStatic::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "PlanarForceX"; case 2: return "PlanarForceY"; case 3: return "PlanarForceZ"; } return IfcStructuralLoadStatic::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14127,6 +15149,10 @@ public: bool hasRotationalDisplacementRZ(); /// Rotation about the z-axis. IfcPlaneAngleMeasure RotationalDisplacementRZ(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcStructuralLoadStatic::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "DisplacementX"; case 2: return "DisplacementY"; case 3: return "DisplacementZ"; case 4: return "RotationalDisplacementRX"; case 5: return "RotationalDisplacementRY"; case 6: return "RotationalDisplacementRZ"; } return IfcStructuralLoadStatic::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14144,6 +15170,10 @@ public: bool hasDistortion(); /// The distortion curvature (warping, i.e. a cross-sectional deplanation) given to the displacement load. IfcCurvatureMeasure Distortion(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return DOUBLE; } return IfcStructuralLoadSingleDisplacement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "Distortion"; } return IfcStructuralLoadSingleDisplacement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14184,6 +15214,10 @@ public: bool hasMomentZ(); /// Moment about the z-axis. IfcTorqueMeasure MomentZ(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcStructuralLoadStatic::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "ForceX"; case 2: return "ForceY"; case 3: return "ForceZ"; case 4: return "MomentX"; case 5: return "MomentY"; case 6: return "MomentZ"; } return IfcStructuralLoadStatic::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14206,6 +15240,10 @@ public: bool hasWarpingMoment(); /// The warping moment at the point load. IfcWarpingMomentMeasure WarpingMoment(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return DOUBLE; } return IfcStructuralLoadSingleForce::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "WarpingMoment"; } return IfcStructuralLoadSingleForce::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14264,6 +15302,10 @@ public: /// Whether the optional attribute CentreOfGravityInY is defined for this IfcStructuralProfileProperties bool hasCentreOfGravityInY(); IfcLengthMeasure CentreOfGravityInY(); + virtual unsigned int getArgumentCount() const { return 23; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; case 13: return DOUBLE; case 14: return DOUBLE; case 15: return DOUBLE; case 16: return DOUBLE; case 17: return DOUBLE; case 18: return DOUBLE; case 19: return DOUBLE; case 20: return DOUBLE; case 21: return DOUBLE; case 22: return DOUBLE; } return IfcGeneralProfileProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "TorsionalConstantX"; case 8: return "MomentOfInertiaYZ"; case 9: return "MomentOfInertiaY"; case 10: return "MomentOfInertiaZ"; case 11: return "WarpingConstant"; case 12: return "ShearCentreZ"; case 13: return "ShearCentreY"; case 14: return "ShearDeformationAreaZ"; case 15: return "ShearDeformationAreaY"; case 16: return "MaximumSectionModulusY"; case 17: return "MinimumSectionModulusY"; case 18: return "MaximumSectionModulusZ"; case 19: return "MinimumSectionModulusZ"; case 20: return "TorsionalSectionModulus"; case 21: return "CentreOfGravityInX"; case 22: return "CentreOfGravityInY"; } return IfcGeneralProfileProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14286,6 +15328,10 @@ public: /// Whether the optional attribute PlasticShapeFactorZ is defined for this IfcStructuralSteelProfileProperties bool hasPlasticShapeFactorZ(); IfcPositiveRatioMeasure PlasticShapeFactorZ(); + virtual unsigned int getArgumentCount() const { return 27; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 23: return DOUBLE; case 24: return DOUBLE; case 25: return DOUBLE; case 26: return DOUBLE; } return IfcStructuralProfileProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 23: return "ShearAreaZ"; case 24: return "ShearAreaY"; case 25: return "PlasticShapeFactorY"; case 26: return "PlasticShapeFactorZ"; } return IfcStructuralProfileProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14308,6 +15354,10 @@ class IfcSubedge : public IfcEdge { public: /// The Edge, or Subedge, which contains the Subedge. IfcEdge* ParentEdge(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcEdge::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "ParentEdge"; } return IfcEdge::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14328,6 +15378,10 @@ public: /// A surface is arcwise connected. class IfcSurface : public IfcGeometricRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14424,6 +15478,10 @@ public: IfcSpecularHighlightSelect SpecularHighlight(); /// Identifies the predefined types of reflectance method from which the method required may be set. IfcReflectanceMethodEnum::IfcReflectanceMethodEnum ReflectanceMethod(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return ENTITY; case 3: return ENTITY; case 4: return ENTITY; case 5: return ENTITY; case 6: return ENTITY; case 7: return ENTITY; case 8: return ENUMERATION; } return IfcSurfaceStyleShading::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Transparency"; case 2: return "DiffuseColour"; case 3: return "TransmissionColour"; case 4: return "DiffuseTransmissionColour"; case 5: return "ReflectionColour"; case 6: return "SpecularColour"; case 7: return "SpecularHighlight"; case 8: return "ReflectanceMethod"; } return IfcSurfaceStyleShading::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14456,6 +15514,10 @@ public: IfcProfileDef* SweptArea(); /// Position coordinate system for the swept area, provided by a profile definition within the XY plane of the Position. IfcAxis2Placement3D* Position(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcSolidModel::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SweptArea"; case 1: return "Position"; } return IfcSolidModel::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14535,6 +15597,10 @@ public: /// /// IFC2x4 CHANGE  The attribute has been changed to OPTIONAL with upward compatibility for file-based exchange. IfcParameterValue EndParam(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; } return IfcSolidModel::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Directrix"; case 1: return "Radius"; case 2: return "InnerRadius"; case 3: return "StartParam"; case 4: return "EndParam"; } return IfcSolidModel::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14554,6 +15620,10 @@ public: IfcProfileDef* SweptCurve(); /// Position coordinate system for the placement of the profile within the xy plane of the axis placement. IfcAxis2Placement3D* Position(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcSurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "SweptCurve"; case 1: return "Position"; } return IfcSurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14623,6 +15693,10 @@ public: /// Whether the optional attribute CentreOfGravityInY is defined for this IfcTShapeProfileDef bool hasCentreOfGravityInY(); IfcPositiveLengthMeasure CentreOfGravityInY(); + virtual unsigned int getArgumentCount() const { return 13; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Depth"; case 4: return "FlangeWidth"; case 5: return "WebThickness"; case 6: return "FlangeThickness"; case 7: return "FilletRadius"; case 8: return "FlangeEdgeRadius"; case 9: return "WebEdgeRadius"; case 10: return "WebSlope"; case 11: return "FlangeSlope"; case 12: return "CentreOfGravityInY"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14634,6 +15708,10 @@ public: class IfcTerminatorSymbol : public IfcAnnotationSymbolOccurrence { public: IfcAnnotationCurveOccurrence* AnnotatedCurve(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return ENTITY; } return IfcAnnotationSymbolOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "AnnotatedCurve"; } return IfcAnnotationSymbolOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14661,6 +15739,10 @@ public: IfcAxis2Placement Placement(); /// The writing direction of the text literal. IfcTextPath::IfcTextPath Path(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return STRING; case 1: return ENTITY; case 2: return ENUMERATION; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Literal"; case 1: return "Placement"; case 2: return "Path"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14684,6 +15766,10 @@ public: IfcPlanarExtent* Extent(); /// The alignment of the text literal relative to its position. IfcBoxAlignment BoxAlignment(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return ENTITY; case 4: return STRING; } return IfcTextLiteral::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Extent"; case 4: return "BoxAlignment"; } return IfcTextLiteral::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14740,6 +15826,10 @@ public: IfcPositiveLengthMeasure YDim(); /// Offset from the beginning of the top line to the bottom line, measured along the implicit x-axis. IfcLengthMeasure TopXOffset(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "BottomXDim"; case 4: return "TopXDim"; case 5: return "YDim"; case 6: return "TopXOffset"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14760,6 +15850,10 @@ class IfcTwoDirectionRepeatFactor : public IfcOneDirectionRepeatFactor { public: /// A vector which specifies the relative positioning of tiles in the second direction. IfcVector* SecondRepeatFactor(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; } return IfcOneDirectionRepeatFactor::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "SecondRepeatFactor"; } return IfcOneDirectionRepeatFactor::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14817,6 +15911,10 @@ public: /// /// IFC2x3 CHANGE  The attribute aggregate type has been changed from LIST to SET. SHARED_PTR< IfcTemplatedEntityList > HasPropertySets(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return STRING; case 5: return ENTITY_LIST; } return IfcObjectDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "ApplicableOccurrence"; case 5: return "HasPropertySets"; } return IfcObjectDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ObjectTypeOf(); // INVERSE IfcRelDefinesByType::RelatingType bool is(Type::Enum v) const; Type::Enum type() const; @@ -14902,6 +16000,10 @@ public: bool hasTag(); /// 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. IfcLabel Tag(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY_LIST; case 7: return STRING; } return IfcTypeObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "RepresentationMaps"; case 7: return "Tag"; } return IfcTypeObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14963,6 +16065,10 @@ public: /// Whether the optional attribute CentreOfGravityInX is defined for this IfcUShapeProfileDef bool hasCentreOfGravityInX(); IfcPositiveLengthMeasure CentreOfGravityInX(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Depth"; case 4: return "FlangeWidth"; case 5: return "WebThickness"; case 6: return "FlangeThickness"; case 7: return "FilletRadius"; case 8: return "EdgeRadius"; case 9: return "FlangeSlope"; case 10: return "CentreOfGravityInX"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -14984,6 +16090,10 @@ public: IfcDirection* Orientation(); /// The magnitude of the vector. All vectors of Magnitude 0.0 are regarded as equal in value regardless of the orientation attribute. IfcLengthMeasure Magnitude(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Orientation"; case 1: return "Magnitude"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15008,6 +16118,10 @@ class IfcVertexLoop : public IfcLoop { public: /// The vertex which defines the entire loop. IfcVertex* LoopVertex(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcLoop::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "LoopVertex"; } return IfcLoop::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15154,6 +16268,10 @@ public: /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). IfcShapeAspect* ShapeAspectStyle(); + virtual unsigned int getArgumentCount() const { return 13; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return ENTITY; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "LiningDepth"; case 5: return "LiningThickness"; case 6: return "TransomThickness"; case 7: return "MullionThickness"; case 8: return "FirstTransomOffset"; case 9: return "SecondTransomOffset"; case 10: return "FirstMullionOffset"; case 11: return "SecondMullionOffset"; case 12: return "ShapeAspectStyle"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15227,6 +16345,10 @@ public: /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). IfcShapeAspect* ShapeAspectStyle(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENUMERATION; case 5: return ENUMERATION; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return ENTITY; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "OperationType"; case 5: return "PanelPosition"; case 6: return "FrameDepth"; case 7: return "FrameThickness"; case 8: return "ShapeAspectStyle"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15263,6 +16385,10 @@ public: bool ParameterTakesPrecedence(); /// The Boolean indicates, whether the attached ShapeStyle can be sized (using scale factor of transformation), or not (FALSE). If not, the ShapeStyle should be inserted by the IfcWindow (using IfcMappedItem) with the scale factor = 1. bool Sizeable(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; case 9: return ENUMERATION; case 10: return BOOL; case 11: return BOOL; } return IfcTypeProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "ConstructionType"; case 9: return "OperationType"; case 10: return "ParameterTakesPrecedence"; case 11: return "Sizeable"; } return IfcTypeProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15314,6 +16440,10 @@ public: bool hasEdgeRadius(); /// Edge radius according the above illustration (= r2). IfcPositiveLengthMeasure EdgeRadius(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Depth"; case 4: return "FlangeWidth"; case 5: return "WebThickness"; case 6: return "FlangeThickness"; case 7: return "FilletRadius"; case 8: return "EdgeRadius"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15324,6 +16454,10 @@ public: }; class IfcAnnotationCurveOccurrence : public IfcAnnotationOccurrence { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcAnnotationOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15364,6 +16498,10 @@ public: /// /// IFC2x Edition 3 CHANGE  The two new attributes OuterBoundary and InnerBoundaries replace the old single attribute Boundaries. SHARED_PTR< IfcTemplatedEntityList > InnerBoundaries(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "OuterBoundary"; case 1: return "InnerBoundaries"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15380,6 +16518,10 @@ public: /// Whether the optional attribute GlobalOrLocal is defined for this IfcAnnotationFillAreaOccurrence bool hasGlobalOrLocal(); IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum GlobalOrLocal(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return ENTITY; case 4: return ENUMERATION; } return IfcAnnotationOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "FillStyleTarget"; case 4: return "GlobalOrLocal"; } return IfcAnnotationOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15394,6 +16536,10 @@ public: /// Whether the optional attribute TextureCoordinates is defined for this IfcAnnotationSurface bool hasTextureCoordinates(); IfcTextureCoordinate* TextureCoordinates(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Item"; case 1: return "TextureCoordinates"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15417,6 +16563,10 @@ public: bool hasAxis(); /// The direction of the local Z axis. IfcDirection* Axis(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; } return IfcPlacement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Axis"; } return IfcPlacement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15442,6 +16592,10 @@ public: bool hasRefDirection(); /// 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.]. IfcDirection* RefDirection(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; } return IfcPlacement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "RefDirection"; } return IfcPlacement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15473,6 +16627,10 @@ public: bool hasRefDirection(); /// 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. IfcDirection* RefDirection(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY; case 2: return ENTITY; } return IfcPlacement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Axis"; case 2: return "RefDirection"; } return IfcPlacement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15515,6 +16673,10 @@ public: IfcBooleanOperand FirstOperand(); /// The second operand specified for the operation. IfcBooleanOperand SecondOperand(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; case 1: return ENTITY; case 2: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Operator"; case 1: return "FirstOperand"; case 2: return "SecondOperand"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15537,6 +16699,10 @@ public: /// A bounded surface has boundary curves. class IfcBoundedSurface : public IfcSurface { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcSurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcSurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15577,6 +16743,10 @@ public: IfcPositiveLengthMeasure YDim(); /// Height attribute (measured along the edge parallel to the Z Axis). IfcPositiveLengthMeasure ZDim(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Corner"; case 1: return "XDim"; case 2: return "YDim"; case 3: return "ZDim"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15619,6 +16789,10 @@ class IfcBoxedHalfSpace : public IfcHalfSpaceSolid { public: /// The box which bounds the resulting solid of the Boolean operation involving the half space solid for computational purposes only. IfcBoundingBox* Enclosure(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcHalfSpaceSolid::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Enclosure"; } return IfcHalfSpaceSolid::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15666,6 +16840,10 @@ public: /// Whether the optional attribute CentreOfGravityInX is defined for this IfcCShapeProfileDef bool hasCentreOfGravityInX(); IfcPositiveLengthMeasure CentreOfGravityInX(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Depth"; case 4: return "Width"; case 5: return "WallThickness"; case 6: return "Girth"; case 7: return "InternalFilletRadius"; case 8: return "CentreOfGravityInX"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15685,6 +16863,10 @@ class IfcCartesianPoint : public IfcPoint { public: /// 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 /*[1:3]*/ Coordinates(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return VECTOR_DOUBLE; } return IfcPoint::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Coordinates"; } return IfcPoint::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15739,6 +16921,10 @@ public: bool hasScale(); /// The scaling value specified for the transformation. double Scale(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENTITY; case 3: return DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Axis1"; case 1: return "Axis2"; case 2: return "LocalOrigin"; case 3: return "Scale"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15754,6 +16940,10 @@ public: /// HISTORY: New entity in IFC Release 2x. class IfcCartesianTransformationOperator2D : public IfcCartesianTransformationOperator { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcCartesianTransformationOperator::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcCartesianTransformationOperator::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15778,6 +16968,10 @@ public: bool hasScale2(); /// The scaling value specified for the transformation along the axis 2. This is normally the y scale factor. double Scale2(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return DOUBLE; } return IfcCartesianTransformationOperator2D::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "Scale2"; } return IfcCartesianTransformationOperator2D::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15797,6 +16991,10 @@ public: bool hasAxis3(); /// The exact direction of U[3], the derived Z axis direction. IfcDirection* Axis3(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; } return IfcCartesianTransformationOperator::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "Axis3"; } return IfcCartesianTransformationOperator::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15826,6 +17024,10 @@ public: bool hasScale3(); /// The scaling value specified for the transformation along the axis 3. This is normally the z scale factor. double Scale3(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return DOUBLE; case 6: return DOUBLE; } return IfcCartesianTransformationOperator3D::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "Scale2"; case 6: return "Scale3"; } return IfcCartesianTransformationOperator3D::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15850,6 +17052,10 @@ class IfcCircleProfileDef : public IfcParameterizedProfileDef { public: /// The radius of the circle. IfcPositiveLengthMeasure Radius(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Radius"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15909,6 +17115,10 @@ public: /// 10303-42:1994, p.149 for the equation. class IfcClosedShell : public IfcConnectedFaceSet { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcConnectedFaceSet::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcConnectedFaceSet::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15934,6 +17144,10 @@ public: bool SameSense(); /// The bounded curve which defines the geometry of the segment. IfcCurve* ParentCurve(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENUMERATION; case 1: return BOOL; case 2: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Transition"; case 1: return "SameSense"; case 2: return "ParentCurve"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > UsingCurves(); // INVERSE IfcCompositeCurve::Segments bool is(Type::Enum v) const; Type::Enum type() const; @@ -15961,6 +17175,10 @@ public: /// Whether the optional attribute CentreOfGravityInY is defined for this IfcCraneRailAShapeProfileDef bool hasCentreOfGravityInY(); IfcPositiveLengthMeasure CentreOfGravityInY(); + virtual unsigned int getArgumentCount() const { return 15; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; case 13: return DOUBLE; case 14: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "OverallHeight"; case 4: return "BaseWidth2"; case 5: return "Radius"; case 6: return "HeadWidth"; case 7: return "HeadDepth2"; case 8: return "HeadDepth3"; case 9: return "WebThickness"; case 10: return "BaseWidth4"; case 11: return "BaseDepth1"; case 12: return "BaseDepth2"; case 13: return "BaseDepth3"; case 14: return "CentreOfGravityInY"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -15984,6 +17202,10 @@ public: /// Whether the optional attribute CentreOfGravityInY is defined for this IfcCraneRailFShapeProfileDef bool hasCentreOfGravityInY(); IfcPositiveLengthMeasure CentreOfGravityInY(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "OverallHeight"; case 4: return "HeadWidth"; case 5: return "Radius"; case 6: return "HeadDepth2"; case 7: return "HeadDepth3"; case 8: return "WebThickness"; case 9: return "BaseDepth1"; case 10: return "BaseDepth2"; case 11: return "CentreOfGravityInY"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16001,6 +17223,10 @@ class IfcCsgPrimitive3D : public IfcGeometricRepresentationItem { public: /// The placement coordinate system to which the parameters of each individual CSG primitive apply. IfcAxis2Placement3D* Position(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Position"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16054,6 +17280,10 @@ class IfcCsgSolid : public IfcSolidModel { public: /// 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). IfcCsgSelect TreeRootExpression(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcSolidModel::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "TreeRootExpression"; } return IfcSolidModel::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16074,6 +17304,10 @@ public: /// A curve shall have an arc length greater than zero. class IfcCurve : public IfcGeometricRepresentationItem { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16103,6 +17337,10 @@ public: IfcCurve* OuterBoundary(); /// An optional set of inner boundaries. They shall not intersect each other or the outer boundary. SHARED_PTR< IfcTemplatedEntityList > InnerBoundaries(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENTITY_LIST; } return IfcBoundedSurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BasisSurface"; case 1: return "OuterBoundary"; case 2: return "InnerBoundaries"; } return IfcBoundedSurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16124,6 +17362,10 @@ public: IfcDefinedSymbolSelect Definition(); /// A description of the placement, orientation and (uniform or non-uniform) scaling of the defined symbol. IfcCartesianTransformationOperator2D* Target(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Definition"; case 1: return "Target"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16134,6 +17376,10 @@ public: }; class IfcDimensionCurve : public IfcAnnotationCurveOccurrence { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcAnnotationCurveOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcAnnotationCurveOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > AnnotatedBySymbols(); // INVERSE IfcTerminatorSymbol::AnnotatedCurve bool is(Type::Enum v) const; Type::Enum type() const; @@ -16146,6 +17392,10 @@ public: class IfcDimensionCurveTerminator : public IfcTerminatorSymbol { public: IfcDimensionExtentUsage::IfcDimensionExtentUsage Role(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENUMERATION; } return IfcTerminatorSymbol::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "Role"; } return IfcTerminatorSymbol::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16165,6 +17415,10 @@ class IfcDirection : public IfcGeometricRepresentationItem { public: /// The components in the direction of X axis (DirectionRatios[1]), of Y axis (DirectionRatios[2]), and of Z axis (DirectionRatios[3]) std::vector /*[2:3]*/ DirectionRatios(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return VECTOR_DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "DirectionRatios"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16316,6 +17570,10 @@ public: /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). IfcShapeAspect* ShapeAspectStyle(); + virtual unsigned int getArgumentCount() const { return 15; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; case 13: return DOUBLE; case 14: return ENTITY; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "LiningDepth"; case 5: return "LiningThickness"; case 6: return "ThresholdDepth"; case 7: return "ThresholdThickness"; case 8: return "TransomThickness"; case 9: return "TransomOffset"; case 10: return "LiningOffset"; case 11: return "ThresholdOffset"; case 12: return "CasingThickness"; case 13: return "CasingDepth"; case 14: return "ShapeAspectStyle"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16389,6 +17647,10 @@ public: /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). IfcShapeAspect* ShapeAspectStyle(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return DOUBLE; case 5: return ENUMERATION; case 6: return DOUBLE; case 7: return ENUMERATION; case 8: return ENTITY; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "PanelDepth"; case 5: return "PanelOperation"; case 6: return "PanelWidth"; case 7: return "PanelPosition"; case 8: return "ShapeAspectStyle"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16433,6 +17695,10 @@ public: bool ParameterTakesPrecedence(); /// The Boolean indicates, whether the attached IfcMappedRepresentation (if given) can be sized (using scale factor of transformation), or not (FALSE). If not, the IfcMappedRepresentation should be IfcShapeRepresentation of the IfcDoor (using IfcMappedItem as the Item) with the scale factor = 1. bool Sizeable(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; case 9: return ENUMERATION; case 10: return BOOL; case 11: return BOOL; } return IfcTypeProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "OperationType"; case 9: return "ConstructionType"; case 10: return "ParameterTakesPrecedence"; case 11: return "Sizeable"; } return IfcTypeProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16444,6 +17710,10 @@ public: class IfcDraughtingCallout : public IfcGeometricRepresentationItem { public: SHARED_PTR< IfcTemplatedEntityList > Contents(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Contents"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > IsRelatedFromCallout(); // INVERSE IfcDraughtingCalloutRelationship::RelatedDraughtingCallout SHARED_PTR< IfcTemplatedEntityList > IsRelatedToCallout(); // INVERSE IfcDraughtingCalloutRelationship::RelatingDraughtingCallout bool is(Type::Enum v) const; @@ -16528,6 +17798,10 @@ public: /// 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 IfcDraughtingPreDefinedColour : public IfcPreDefinedColour { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedColour::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedColour::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16551,6 +17825,10 @@ public: /// HISTORY  New entity in IFC2x2. class IfcDraughtingPreDefinedCurveFont : public IfcPreDefinedCurveFont { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcPreDefinedCurveFont::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcPreDefinedCurveFont::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16574,6 +17852,10 @@ class IfcEdgeLoop : public IfcLoop { public: /// A list of oriented edge entities which are concatenated together to form this path. SHARED_PTR< IfcTemplatedEntityList > EdgeList(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcLoop::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "EdgeList"; } return IfcLoop::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16669,6 +17951,10 @@ public: IfcLabel MethodOfMeasurement(); /// The individual quantities for the element, can be a set of length, area, volume, weight or count based quantities. SHARED_PTR< IfcTemplatedEntityList > Quantities(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return STRING; case 5: return ENTITY_LIST; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "MethodOfMeasurement"; case 5: return "Quantities"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16705,6 +17991,10 @@ public: bool hasElementType(); /// 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. IfcLabel ElementType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return STRING; } return IfcTypeProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "ElementType"; } return IfcTypeProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16722,6 +18012,10 @@ class IfcElementarySurface : public IfcSurface { public: /// The position and orientation of the surface. This attribute is used in the definition of the parameterization of the surface. IfcAxis2Placement3D* Position(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcSurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Position"; } return IfcSurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16752,6 +18046,10 @@ public: IfcPositiveLengthMeasure SemiAxis1(); /// The second radius of the ellipse. It is measured along the direction of Position.P[2]. IfcPositiveLengthMeasure SemiAxis2(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "SemiAxis1"; case 4: return "SemiAxis2"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16768,6 +18066,10 @@ public: /// Whether the optional attribute UserDefinedEnergySequence is defined for this IfcEnergyProperties bool hasUserDefinedEnergySequence(); IfcLabel UserDefinedEnergySequence(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENUMERATION; case 5: return STRING; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "EnergySequence"; case 5: return "UserDefinedEnergySequence"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16851,6 +18153,10 @@ public: /// The distance the surface is to be swept along the ExtrudedDirection /// . IfcPositiveLengthMeasure Depth(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return DOUBLE; } return IfcSweptAreaSolid::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "ExtrudedDirection"; case 3: return "Depth"; } return IfcSweptAreaSolid::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16875,6 +18181,10 @@ class IfcFaceBasedSurfaceModel : public IfcGeometricRepresentationItem { public: /// The set of connected face sets comprising the face based surface model. SHARED_PTR< IfcTemplatedEntityList > FbsmFaces(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "FbsmFaces"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16954,6 +18264,10 @@ public: IfcCartesianPoint* PatternStart(); /// A plane angle measure determining the direction of the parallel hatching lines. IfcPlaneAngleMeasure HatchLineAngle(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; case 2: return ENTITY; case 3: return ENTITY; case 4: return DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "HatchLineAppearance"; case 1: return "StartOfNextHatchLine"; case 2: return "PointOfReferenceHatchLine"; case 3: return "PatternStart"; case 4: return "HatchLineAngle"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16977,6 +18291,10 @@ public: /// /// NOTE Only IfcStyleItem's that refer to a compatible geometric representation item and presentation style shall be used. IfcAnnotationSymbolOccurrence* Symbol(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Symbol"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -16998,6 +18316,10 @@ public: SHARED_PTR< IfcTemplatedEntityList > Tiles(); /// The scale factor applied to each tile as it is placed in the annotation fill area. IfcPositiveRatioMeasure TilingScale(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return DOUBLE; } return IfcGeometricRepresentationItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "TilingPattern"; case 1: return "Tiles"; case 2: return "TilingScale"; } return IfcGeometricRepresentationItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17049,6 +18371,10 @@ public: /// Whether the optional attribute PressureSingleValue is defined for this IfcFluidFlowProperties bool hasPressureSingleValue(); IfcPressureMeasure PressureSingleValue(); + virtual unsigned int getArgumentCount() const { return 19; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENUMERATION; case 5: return ENTITY; case 6: return ENTITY; case 7: return ENTITY; case 8: return ENTITY; case 9: return ENTITY; case 10: return STRING; case 11: return DOUBLE; case 12: return DOUBLE; case 13: return ENTITY; case 14: return ENTITY; case 15: return ENTITY; case 16: return DOUBLE; case 17: return DOUBLE; case 18: return DOUBLE; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "PropertySource"; case 5: return "FlowConditionTimeSeries"; case 6: return "VelocityTimeSeries"; case 7: return "FlowrateTimeSeries"; case 8: return "Fluid"; case 9: return "PressureTimeSeries"; case 10: return "UserDefinedPropertySource"; case 11: return "TemperatureSingleValue"; case 12: return "WetBulbTemperatureSingleValue"; case 13: return "WetBulbTemperatureTimeSeries"; case 14: return "TemperatureTimeSeries"; case 15: return "FlowrateSingleValue"; case 16: return "FlowConditionSingleValue"; case 17: return "VelocitySingleValue"; case 18: return "PressureSingleValue"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17087,6 +18413,10 @@ public: /// IFC2x4. class IfcFurnishingElementType : public IfcElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17136,6 +18466,10 @@ class IfcFurnitureType : public IfcFurnishingElementType { public: /// A designation of where the assembly is intended to take place. A selection of alternatives s provided in an enumerated list. IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum AssemblyPlace(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFurnishingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "AssemblyPlace"; } return IfcFurnishingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17153,6 +18487,10 @@ public: /// HISTORY: New entity in IFC2x2. class IfcGeometricCurveSet : public IfcGeometricSet { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGeometricSet::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGeometricSet::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17238,6 +18576,10 @@ public: bool hasFilletRadius(); /// The fillet between the web and the flange. IfcPositiveLengthMeasure FilletRadius(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "OverallWidth"; case 4: return "OverallDepth"; case 5: return "WebThickness"; case 6: return "FlangeThickness"; case 7: return "FilletRadius"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17325,6 +18667,10 @@ public: /// Whether the optional attribute CentreOfGravityInY is defined for this IfcLShapeProfileDef bool hasCentreOfGravityInY(); IfcPositiveLengthMeasure CentreOfGravityInY(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 3: return DOUBLE; case 4: return DOUBLE; case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; } return IfcParameterizedProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 3: return "Depth"; case 4: return "Width"; case 5: return "Thickness"; case 6: return "FilletRadius"; case 7: return "EdgeRadius"; case 8: return "LegSlope"; case 9: return "CentreOfGravityInX"; case 10: return "CentreOfGravityInY"; } return IfcParameterizedProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17352,6 +18698,10 @@ public: IfcCartesianPoint* Pnt(); /// The direction of the line, the magnitude and units of Dir affect the parameterization of the line. IfcVector* Dir(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY; } return IfcCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Pnt"; case 1: return "Dir"; } return IfcCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17427,6 +18777,10 @@ class IfcManifoldSolidBrep : public IfcSolidModel { public: /// A closed shell defining the exterior boundary of the solid. The shell normal shall point away from the interior of the solid. IfcClosedShell* Outer(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcSolidModel::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Outer"; } return IfcSolidModel::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17523,6 +18877,10 @@ public: bool hasObjectType(); /// 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. IfcLabel ObjectType(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return STRING; } return IfcObjectDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "ObjectType"; } return IfcObjectDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > IsDefinedBy(); // INVERSE IfcRelDefines::RelatedObjects bool is(Type::Enum v) const; Type::Enum type() const; @@ -17551,6 +18909,10 @@ public: IfcLengthMeasure Distance(); /// An indication of whether the offset curve self-intersects; this is for information only. bool SelfIntersect(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; case 2: return BOOL; } return IfcCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BasisCurve"; case 1: return "Distance"; case 2: return "SelfIntersect"; } return IfcCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17584,6 +18946,10 @@ public: bool SelfIntersect(); /// The direction used to define the direction of the offset curve 3d from the basis curve. IfcDirection* RefDirection(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; case 2: return BOOL; case 3: return ENTITY; } return IfcCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BasisCurve"; case 1: return "Distance"; case 2: return "SelfIntersect"; case 3: return "RefDirection"; } return IfcCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17641,6 +19007,10 @@ public: bool hasShapeAspectStyle(); /// 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. IfcShapeAspect* ShapeAspectStyle(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENUMERATION; case 5: return ENUMERATION; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return ENTITY; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "OperationType"; case 5: return "PanelPosition"; case 6: return "FrameDepth"; case 7: return "FrameThickness"; case 8: return "ShapeAspectStyle"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17660,6 +19030,10 @@ public: /// 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. IfcAxis2Placement Placement(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcPlanarExtent::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Placement"; } return IfcPlanarExtent::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17706,6 +19080,10 @@ public: /// HISTORY New class in IFC Release 1.5 class IfcPlane : public IfcElementarySurface { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementarySurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementarySurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17756,6 +19134,10 @@ public: /// as a mechanism to a process, such as labor, material and equipment in cost calculations. class IfcProcess : public IfcObject { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > OperatesOn(); // INVERSE IfcRelAssignsToProcess::RelatingProcess SHARED_PTR< IfcTemplatedEntityList > IsSuccessorFrom(); // INVERSE IfcRelSequence::RelatedProcess SHARED_PTR< IfcTemplatedEntityList > IsPredecessorTo(); // INVERSE IfcRelSequence::RelatingProcess @@ -17868,6 +19250,10 @@ public: bool hasRepresentation(); /// 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. IfcProductRepresentation* Representation(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; case 6: return ENTITY; } return IfcObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "ObjectPlacement"; case 6: return "Representation"; } return IfcObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ReferencedBy(); // INVERSE IfcRelAssignsToProduct::RelatingProduct bool is(Type::Enum v) const; Type::Enum type() const; @@ -17931,6 +19317,10 @@ public: IfcLabel Phase(); SHARED_PTR< IfcTemplatedEntityList > RepresentationContexts(); IfcUnitAssignment* UnitsInContext(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return STRING; case 7: return ENTITY_LIST; case 8: return ENTITY; } return IfcObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "LongName"; case 6: return "Phase"; case 7: return "RepresentationContexts"; case 8: return "UnitsInContext"; } return IfcObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -17941,6 +19331,10 @@ public: }; class IfcProjectionCurve : public IfcAnnotationCurveOccurrence { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcAnnotationCurveOccurrence::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcAnnotationCurveOccurrence::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18006,6 +19400,10 @@ class IfcPropertySet : public IfcPropertySetDefinition { public: /// 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. SHARED_PTR< IfcTemplatedEntityList > HasProperties(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY_LIST; } return IfcPropertySetDefinition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "HasProperties"; } return IfcPropertySetDefinition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18038,6 +19436,10 @@ public: bool hasTag(); /// 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. IfcLabel Tag(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENUMERATION; case 8: return STRING; } return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "ProxyType"; case 8: return "Tag"; } return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18078,6 +19480,10 @@ public: bool hasOuterFilletRadius(); /// Outer corner radius. IfcPositiveLengthMeasure OuterFilletRadius(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return DOUBLE; case 6: return DOUBLE; case 7: return DOUBLE; } return IfcRectangleProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "WallThickness"; case 6: return "InnerFilletRadius"; case 7: return "OuterFilletRadius"; } return IfcRectangleProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18182,6 +19588,10 @@ public: IfcPositiveLengthMeasure YLength(); /// 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]. IfcPositiveLengthMeasure Height(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcCsgPrimitive3D::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "XLength"; case 2: return "YLength"; case 3: return "Height"; } return IfcCsgPrimitive3D::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18221,6 +19631,10 @@ public: bool Usense(); /// 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(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return BOOL; case 6: return BOOL; } return IfcBoundedSurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BasisSurface"; case 1: return "U1"; case 2: return "V1"; case 3: return "U2"; case 4: return "V2"; case 5: return "Usense"; case 6: return "Vsense"; } return IfcBoundedSurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18249,6 +19663,10 @@ public: /// 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. IfcObjectTypeEnum::IfcObjectTypeEnum RelatedObjectsType(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY_LIST; case 5: return ENUMERATION; } return IfcRelationship::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatedObjects"; case 5: return "RelatedObjectsType"; } return IfcRelationship::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18274,6 +19692,10 @@ public: bool hasActingRole(); /// Role of the actor played within the context of the assignment to the object(s). IfcActorRole* ActingRole(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY; case 7: return ENTITY; } return IfcRelAssigns::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "RelatingActor"; case 7: return "ActingRole"; } return IfcRelAssigns::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18291,6 +19713,10 @@ class IfcRelAssignsToControl : public IfcRelAssigns { public: /// Reference to the IfcControl that applies a control upon objects. IfcControl* RelatingControl(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY; } return IfcRelAssigns::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "RelatingControl"; } return IfcRelAssigns::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18316,6 +19742,10 @@ class IfcRelAssignsToGroup : public IfcRelAssigns { public: /// Reference to group that contains all assigned group members. IfcGroup* RelatingGroup(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY; } return IfcRelAssigns::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "RelatingGroup"; } return IfcRelAssigns::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18356,6 +19786,10 @@ public: bool hasQuantityInProcess(); /// Quantity of the object specific for the operation by this process. IfcMeasureWithUnit* QuantityInProcess(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY; case 7: return ENTITY; } return IfcRelAssigns::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "RelatingProcess"; case 7: return "QuantityInProcess"; } return IfcRelAssigns::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18378,6 +19812,10 @@ public: /// /// IFC2x4 CHANGE Datatype expanded to include IfcProduct and IfcTypeProduct. IfcProduct* RelatingProduct(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY; } return IfcRelAssigns::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "RelatingProduct"; } return IfcRelAssigns::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18388,6 +19826,10 @@ public: }; class IfcRelAssignsToProjectOrder : public IfcRelAssignsToControl { public: + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRelAssignsToControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRelAssignsToControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18408,6 +19850,10 @@ public: /// /// IFC2x4 CHANGE Datatype expanded to include IfcResource and IfcTypeResource. IfcResource* RelatingResource(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY; } return IfcRelAssigns::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "RelatingResource"; } return IfcRelAssigns::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18463,6 +19909,10 @@ public: /// /// IFC2x4 CHANGE  The attribute datatype has been changed from IfcRoot to IfcDefinitionSelect. SHARED_PTR< IfcTemplatedEntityList > RelatedObjects(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY_LIST; } return IfcRelationship::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatedObjects"; } return IfcRelationship::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18474,6 +19924,10 @@ public: class IfcRelAssociatesAppliedValue : public IfcRelAssociates { public: IfcAppliedValue* RelatingAppliedValue(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingAppliedValue"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18489,6 +19943,10 @@ class IfcRelAssociatesApproval : public IfcRelAssociates { public: /// Reference to approval that is being applied using this relationship. IfcApproval* RelatingApproval(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingApproval"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18531,6 +19989,10 @@ class IfcRelAssociatesClassification : public IfcRelAssociates { public: /// Classification applied to the objects. IfcClassificationNotationSelect RelatingClassification(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingClassification"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18548,6 +20010,10 @@ public: IfcLabel Intent(); /// Reference to constraint that is being applied using this relationship. IfcConstraint* RelatingConstraint(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "Intent"; case 6: return "RelatingConstraint"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18567,6 +20033,10 @@ class IfcRelAssociatesDocument : public IfcRelAssociates { public: /// Document information or reference which is applied to the objects. IfcDocumentSelect RelatingDocument(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingDocument"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18586,6 +20056,10 @@ class IfcRelAssociatesLibrary : public IfcRelAssociates { public: /// Reference to a library, from which the definition of the property set is taken. IfcLibrarySelect RelatingLibrary(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingLibrary"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18692,6 +20166,10 @@ class IfcRelAssociatesMaterial : public IfcRelAssociates { public: /// Material definition assigned to the elements or element types. IfcMaterialSelect RelatingMaterial(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingMaterial"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18709,6 +20187,10 @@ public: /// Whether the optional attribute ProfileOrientation is defined for this IfcRelAssociatesProfileProperties bool hasProfileOrientation(); IfcOrientationSelect ProfileOrientation(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; case 6: return ENTITY; case 7: return ENTITY; } return IfcRelAssociates::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingProfileProperties"; case 6: return "ProfileSectionLocation"; case 7: return "ProfileOrientation"; } return IfcRelAssociates::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18722,6 +20204,10 @@ public: /// HISTORY: New entity in IFC Release 2x. class IfcRelConnects : public IfcRelationship { public: + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRelationship::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRelationship::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18762,6 +20248,10 @@ public: IfcElement* RelatingElement(); /// Reference to a subtype of IfcElement that is connected by the connection relationship in the role of RelatedElement. IfcElement* RelatedElement(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; case 6: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "ConnectionGeometry"; case 5: return "RelatingElement"; case 6: return "RelatedElement"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18812,6 +20302,10 @@ public: IfcConnectionTypeEnum::IfcConnectionTypeEnum RelatedConnectionType(); /// Indication of the connection type in relation to the path of the RelatingObject. IfcConnectionTypeEnum::IfcConnectionTypeEnum RelatingConnectionType(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return VECTOR_INT; case 8: return VECTOR_INT; case 9: return ENUMERATION; case 10: return ENUMERATION; } return IfcRelConnectsElements::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "RelatingPriorities"; case 8: return "RelatedPriorities"; case 9: return "RelatedConnectionType"; case 10: return "RelatingConnectionType"; } return IfcRelConnectsElements::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18853,6 +20347,10 @@ public: /// /// IFC2x4 CHANGE Data type extended to IfcObjectDefinition to enable elements and element types for the port relationship. IfcElement* RelatedElement(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingPort"; case 5: return "RelatedElement"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18884,6 +20382,10 @@ public: bool hasRealizingElement(); /// Defines the element that realizes a port connection relationship. IfcElement* RealizingElement(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; case 6: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingPort"; case 5: return "RelatedPort"; case 6: return "RealizingElement"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18901,6 +20403,10 @@ public: IfcStructuralActivityAssignmentSelect RelatingElement(); /// Reference to a structural activity which is acting upon the specified structural item or element. IfcStructuralActivity* RelatedStructuralActivity(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingElement"; case 5: return "RelatedStructuralActivity"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18913,6 +20419,10 @@ class IfcRelConnectsStructuralElement : public IfcRelConnects { public: IfcElement* RelatingElement(); IfcStructuralMember* RelatedStructuralMember(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingElement"; case 5: return "RelatedStructuralMember"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18967,6 +20477,10 @@ public: bool hasConditionCoordinateSystem(); /// 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. IfcAxis2Placement3D* ConditionCoordinateSystem(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; case 6: return ENTITY; case 7: return ENTITY; case 8: return DOUBLE; case 9: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingStructuralMember"; case 5: return "RelatedStructuralConnection"; case 6: return "AppliedCondition"; case 7: return "AdditionalConditions"; case 8: return "SupportedLength"; case 9: return "ConditionCoordinateSystem"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -18996,6 +20510,10 @@ class IfcRelConnectsWithEccentricity : public IfcRelConnectsStructuralMember { public: /// 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). IfcConnectionGeometry* ConnectionConstraint(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 10: return ENTITY; } return IfcRelConnectsStructuralMember::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 10: return "ConnectionConstraint"; } return IfcRelConnectsStructuralMember::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19035,6 +20553,10 @@ public: bool hasConnectionType(); /// The type of the connection given for informal purposes, it may include labels, like 'joint', 'rigid joint', 'flexible joint', etc. IfcLabel ConnectionType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENTITY_LIST; case 8: return STRING; } return IfcRelConnectsElements::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "RealizingElements"; case 8: return "ConnectionType"; } return IfcRelConnectsElements::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19113,6 +20635,10 @@ public: SHARED_PTR< IfcTemplatedEntityList > RelatedElements(); /// Spatial structure element, within which the element is contained. Any element can only be contained within one element of the project spatial structure. IfcSpatialStructureElement* RelatingStructure(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY_LIST; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatedElements"; case 5: return "RelatingStructure"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19145,6 +20671,10 @@ public: IfcElement* RelatingBuildingElement(); /// Relationship to the set of coverings at this element. SHARED_PTR< IfcTemplatedEntityList > RelatedCoverings(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY_LIST; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingBuildingElement"; case 5: return "RelatedCoverings"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19184,6 +20714,10 @@ public: IfcSpace* RelatedSpace(); /// Relationship to the set of coverings covering this space. SHARED_PTR< IfcTemplatedEntityList > RelatedCoverings(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY_LIST; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatedSpace"; case 5: return "RelatedCoverings"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19226,6 +20760,10 @@ class IfcRelDecomposes : public IfcRelationship { public: IfcObjectDefinition* RelatingObject(); SHARED_PTR< IfcTemplatedEntityList > RelatedObjects(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY_LIST; } return IfcRelationship::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingObject"; case 5: return "RelatedObjects"; } return IfcRelationship::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19264,6 +20802,10 @@ public: class IfcRelDefines : public IfcRelationship { public: SHARED_PTR< IfcTemplatedEntityList > RelatedObjects(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY_LIST; } return IfcRelationship::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatedObjects"; } return IfcRelationship::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19291,6 +20833,10 @@ class IfcRelDefinesByProperties : public IfcRelDefines { public: /// Reference to the property set definition for that object or set of objects. IfcPropertySetDefinition* RelatingPropertyDefinition(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelDefines::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingPropertyDefinition"; } return IfcRelDefines::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19374,6 +20920,10 @@ class IfcRelDefinesByType : public IfcRelDefines { public: /// Reference to the type (or style) information for that object or set of objects. IfcTypeObject* RelatingType(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcRelDefines::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RelatingType"; } return IfcRelDefines::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19399,6 +20949,10 @@ public: /// /// IFC2x PLATFORM CHANGE: The data type has been changed from IfcBuildingElement to IfcElement with upward compatibility for file based exchange. IfcElement* RelatedBuildingElement(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingOpeningElement"; case 5: return "RelatedBuildingElement"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19420,6 +20974,10 @@ public: SHARED_PTR< IfcTemplatedEntityList > RelatedControlElements(); /// Relationship to a distribution flow element IfcDistributionFlowElement* RelatingFlowElement(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY_LIST; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatedControlElements"; case 5: return "RelatingFlowElement"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19441,6 +20999,10 @@ public: IfcSpatialStructureElement* LocationOfInteraction(); IfcSpaceProgram* RelatedSpaceProgram(); IfcSpaceProgram* RelatingSpaceProgram(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return DOUBLE; case 5: return DOUBLE; case 6: return ENTITY; case 7: return ENTITY; case 8: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "DailyInteraction"; case 5: return "ImportanceRating"; case 6: return "LocationOfInteraction"; case 7: return "RelatedSpaceProgram"; case 8: return "RelatingSpaceProgram"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19476,6 +21038,10 @@ public: /// 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 IfcRelNests : public IfcRelDecomposes { public: + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRelDecomposes::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRelDecomposes::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19486,6 +21052,10 @@ public: }; class IfcRelOccupiesSpaces : public IfcRelAssignsToActor { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRelAssignsToActor::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRelAssignsToActor::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19497,6 +21067,10 @@ public: class IfcRelOverridesProperties : public IfcRelDefinesByProperties { public: SHARED_PTR< IfcTemplatedEntityList > OverridingProperties(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENTITY_LIST; } return IfcRelDefinesByProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "OverridingProperties"; } return IfcRelDefinesByProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19543,6 +21117,10 @@ public: IfcElement* RelatingElement(); /// 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. IfcFeatureElementAddition* RelatedFeatureElement(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingElement"; case 5: return "RelatedFeatureElement"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19609,6 +21187,10 @@ public: /// /// IFC2x Edition 4 CHANGE  The attribute relatingStructure as been promoted to the new supertype IfcSpatialElement with upward compatibility for file based exchange. IfcSpatialStructureElement* RelatingStructure(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY_LIST; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatedElements"; case 5: return "RelatingStructure"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19619,6 +21201,10 @@ public: }; class IfcRelSchedulesCostItems : public IfcRelAssignsToControl { public: + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRelAssignsToControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRelAssignsToControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19693,6 +21279,10 @@ public: IfcTimeMeasure TimeLag(); /// The way in which the time lag applies to the sequence. IfcSequenceEnum::IfcSequenceEnum SequenceType(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; case 6: return DOUBLE; case 7: return ENUMERATION; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingProcess"; case 5: return "RelatedProcess"; case 6: return "TimeLag"; case 7: return "SequenceType"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19732,6 +21322,10 @@ public: /// /// IFC2x Edition 4 CHANGE  The data type has been changed from IfcSpatialStructureElement to IfcSpatialElement with upward compatibility for file based exchange. SHARED_PTR< IfcTemplatedEntityList > RelatedBuildings(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY_LIST; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingSystem"; case 5: return "RelatedBuildings"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19924,6 +21518,10 @@ public: IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum PhysicalOrVirtualBoundary(); /// 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). IfcInternalOrExternalEnum::IfcInternalOrExternalEnum InternalOrExternalBoundary(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; case 6: return ENTITY; case 7: return ENUMERATION; case 8: return ENUMERATION; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingSpace"; case 5: return "RelatedBuildingElement"; case 6: return "ConnectionGeometry"; case 7: return "PhysicalOrVirtualBoundary"; case 8: return "InternalOrExternalBoundary"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19943,6 +21541,10 @@ class IfcRelVoidsElement : public IfcRelConnects { public: IfcElement* RelatingBuildingElement(); IfcFeatureElementSubtraction* RelatedOpeningElement(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return ENTITY; case 5: return ENTITY; } return IfcRelConnects::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "RelatingBuildingElement"; case 5: return "RelatedOpeningElement"; } return IfcRelConnects::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -19966,6 +21568,10 @@ public: /// 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 IfcResource : public IfcObject { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ResourceOf(); // INVERSE IfcRelAssignsToResource::RelatingResource bool is(Type::Enum v) const; Type::Enum type() const; @@ -20057,6 +21663,10 @@ public: IfcAxis1Placement* Axis(); /// 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. IfcPlaneAngleMeasure Angle(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return DOUBLE; } return IfcSweptAreaSolid::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Axis"; case 3: return "Angle"; } return IfcSweptAreaSolid::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20136,6 +21746,10 @@ public: IfcPositiveLengthMeasure Height(); /// The radius of the cone at the base. IfcPositiveLengthMeasure BottomRadius(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; } return IfcCsgPrimitive3D::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Height"; case 2: return "BottomRadius"; } return IfcCsgPrimitive3D::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20231,6 +21845,10 @@ public: IfcPositiveLengthMeasure Height(); /// The radius of the cylinder. IfcPositiveLengthMeasure Radius(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; } return IfcCsgPrimitive3D::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Height"; case 2: return "Radius"; } return IfcCsgPrimitive3D::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20323,6 +21941,10 @@ public: /// IFC2x4 CHANGE  /// Attribute made optional. IfcElementCompositionEnum::IfcElementCompositionEnum CompositionType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return STRING; case 8: return ENUMERATION; } return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "LongName"; case 8: return "CompositionType"; } return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ReferencesElements(); // INVERSE IfcRelReferencedInSpatialStructure::RelatingStructure SHARED_PTR< IfcTemplatedEntityList > ServicedBySystems(); // INVERSE IfcRelServicesBuildings::RelatedBuildings SHARED_PTR< IfcTemplatedEntityList > ContainsElements(); // INVERSE IfcRelContainedInSpatialStructure::RelatingStructure @@ -20370,6 +21992,10 @@ public: /// Release IFC2x Edition 3. class IfcSpatialStructureElementType : public IfcElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20432,6 +22058,10 @@ class IfcSphere : public IfcCsgPrimitive3D { public: /// The radius of the sphere. IfcPositiveLengthMeasure Radius(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; } return IfcCsgPrimitive3D::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Radius"; } return IfcCsgPrimitive3D::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20557,6 +22187,10 @@ public: /// is to be taken as coordinates which are local to individual structural items and activities, /// as established by subclass-specific geometry use definitions. IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum GlobalOrLocal(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENTITY; case 8: return ENUMERATION; } return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "AppliedLoad"; case 8: return "GlobalOrLocal"; } return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > AssignedToStructuralItem(); // INVERSE IfcRelConnectsStructuralActivity::RelatedStructuralActivity bool is(Type::Enum v) const; Type::Enum type() const; @@ -20655,6 +22289,10 @@ public: /// 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 IfcStructuralItem : public IfcProduct { public: + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > AssignedStructuralActivity(); // INVERSE IfcRelConnectsStructuralActivity::RelatingElement bool is(Type::Enum v) const; Type::Enum type() const; @@ -20670,6 +22308,10 @@ public: /// IFC 2x4 change: Use definitions moved to supertype and subtypes. class IfcStructuralMember : public IfcStructuralItem { public: + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ReferencesElement(); // INVERSE IfcRelConnectsStructuralElement::RelatedStructuralMember SHARED_PTR< IfcTemplatedEntityList > ConnectedBy(); // INVERSE IfcRelConnectsStructuralMember::RelatingStructuralMember bool is(Type::Enum v) const; @@ -20702,6 +22344,10 @@ public: /// IfcStructuralAction. class IfcStructuralReaction : public IfcStructuralActivity { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralActivity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralActivity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > Causes(); // INVERSE IfcStructuralAction::CausedBy bool is(Type::Enum v) const; Type::Enum type() const; @@ -20739,6 +22385,10 @@ public: bool hasThickness(); /// Defines the typically understood thickness of the structural surface member, measured normal to its reference surface. IfcPositiveLengthMeasure Thickness(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENUMERATION; case 8: return DOUBLE; } return IfcStructuralMember::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "PredefinedType"; case 8: return "Thickness"; } return IfcStructuralMember::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20769,6 +22419,10 @@ class IfcStructuralSurfaceMemberVarying : public IfcStructuralSurfaceMember { public: std::vector /*[2:?]*/ SubsequentThickness(); IfcShapeAspect* VaryingThicknessLocation(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return VECTOR_DOUBLE; case 10: return ENTITY; } return IfcStructuralSurfaceMember::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "SubsequentThickness"; case 10: return "VaryingThicknessLocation"; } return IfcStructuralSurfaceMember::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20779,6 +22433,10 @@ public: }; class IfcStructuredDimensionCallout : public IfcDraughtingCallout { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDraughtingCallout::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDraughtingCallout::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20863,6 +22521,10 @@ public: IfcParameterValue EndParam(); /// The surface containing the Directrix. IfcSurface* ReferenceSurface(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return DOUBLE; case 4: return DOUBLE; case 5: return ENTITY; } return IfcSweptAreaSolid::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "Directrix"; case 3: return "StartParam"; case 4: return "EndParam"; case 5: return "ReferenceSurface"; } return IfcSweptAreaSolid::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20890,6 +22552,10 @@ public: IfcDirection* ExtrudedDirection(); /// The depth of the extrusion, it determines the parameterization. IfcLengthMeasure Depth(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; case 3: return DOUBLE; } return IfcSweptSurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "ExtrudedDirection"; case 3: return "Depth"; } return IfcSweptSurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20919,6 +22585,10 @@ class IfcSurfaceOfRevolution : public IfcSweptSurface { public: /// A point on the axis of revolution and the direction of the axis of revolution. IfcAxis1Placement* AxisPosition(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 2: return ENTITY; } return IfcSweptSurface::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 2: return "AxisPosition"; } return IfcSweptSurface::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -20959,6 +22629,10 @@ public: /// 'Panel': Panels such as glass. class IfcSystemFurnitureElementType : public IfcFurnishingElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcFurnishingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcFurnishingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21245,6 +22919,10 @@ public: /// A value that indicates the relative priority of the task (in /// comparison to the priorities of other tasks). int Priority(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return STRING; case 7: return STRING; case 8: return BOOL; case 9: return INT; } return IfcProcess::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "TaskId"; case 6: return "Status"; case 7: return "WorkMethod"; case 8: return "IsMilestone"; case 9: return "Priority"; } return IfcProcess::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21320,6 +22998,10 @@ class IfcTransportElementType : public IfcElementType { public: /// Predefined types to define the particular type of the transport element. There may be property set definitions available for each predefined type. IfcTransportElementTypeEnum::IfcTransportElementTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21347,6 +23029,10 @@ class IfcActor : public IfcObject { public: /// Information about the actor. IfcActorSelect TheActor(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; } return IfcObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "TheActor"; } return IfcObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > IsActingUpon(); // INVERSE IfcRelAssignsToActor::RelatingActor bool is(Type::Enum v) const; Type::Enum type() const; @@ -21531,6 +23217,10 @@ public: /// RepresentationType : 'GeometricSet' class IfcAnnotation : public IfcProduct { public: + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ContainedInStructure(); // INVERSE IfcRelContainedInSpatialStructure::RelatedElements bool is(Type::Enum v) const; Type::Enum type() const; @@ -21592,6 +23282,10 @@ public: /// Whether the optional attribute CentreOfGravityInY is defined for this IfcAsymmetricIShapeProfileDef bool hasCentreOfGravityInY(); IfcPositiveLengthMeasure CentreOfGravityInY(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; } return IfcIShapeProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "TopFlangeWidth"; case 9: return "TopFlangeThickness"; case 10: return "TopFlangeFilletRadius"; case 11: return "CentreOfGravityInY"; } return IfcIShapeProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21705,6 +23399,10 @@ public: IfcPositiveLengthMeasure YLength(); /// The size of the block along the placement Z axis. It is provided by the inherited axis placement through SELF\IfcCsgPrimitive3D.Position.P[3]. IfcPositiveLengthMeasure ZLength(); + virtual unsigned int getArgumentCount() const { return 4; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; case 3: return DOUBLE; } return IfcCsgPrimitive3D::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "XLength"; case 2: return "YLength"; case 3: return "ZLength"; } return IfcCsgPrimitive3D::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21722,6 +23420,10 @@ public: /// HISTORY New entity in IFC Release 2.x. class IfcBooleanClippingResult : public IfcBooleanResult { public: + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBooleanResult::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBooleanResult::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21742,6 +23444,10 @@ public: /// A bounded curve has a start point and an end point. class IfcBoundedCurve : public IfcCurve { public: + virtual unsigned int getArgumentCount() const { return 0; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21939,6 +23645,10 @@ public: bool hasBuildingAddress(); /// Address given to the building for postal purposes. IfcPostalAddress* BuildingAddress(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return DOUBLE; case 10: return DOUBLE; case 11: return ENTITY; } return IfcSpatialStructureElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "ElevationOfRefHeight"; case 10: return "ElevationOfTerrain"; case 11: return "BuildingAddress"; } return IfcSpatialStructureElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -21978,6 +23688,10 @@ public: /// Release IFC2x Edition 2. class IfcBuildingElementType : public IfcElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22169,6 +23883,10 @@ public: bool hasElevation(); /// 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. IfcLengthMeasure Elevation(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return DOUBLE; } return IfcSpatialStructureElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "Elevation"; } return IfcSpatialStructureElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22199,6 +23917,10 @@ class IfcCircleHollowProfileDef : public IfcCircleProfileDef { public: /// Thickness of the material, it is the difference between the outer and inner radius. IfcPositiveLengthMeasure WallThickness(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 4: return DOUBLE; } return IfcCircleProfileDef::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 4: return "WallThickness"; } return IfcCircleProfileDef::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22309,6 +24031,10 @@ class IfcColumnType : public IfcBuildingElementType { public: /// Identifies the predefined types of a column element from which the type required may be set. IfcColumnTypeEnum::IfcColumnTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22389,6 +24115,10 @@ public: SHARED_PTR< IfcTemplatedEntityList > Segments(); /// Indication of whether the curve intersects itself or not; this is for information only. bool SelfIntersect(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; case 1: return BOOL; } return IfcBoundedCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Segments"; case 1: return "SelfIntersect"; } return IfcBoundedCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22406,6 +24136,10 @@ class IfcConic : public IfcCurve { public: /// The location and orientation of the conic. Further details of the interpretation of this attribute are given for the individual subtypes." IfcAxis2Placement Position(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; } return IfcCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Position"; } return IfcCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22501,6 +24235,10 @@ public: /// Whether the optional attribute BaseQuantity is defined for this IfcConstructionResource bool hasBaseQuantity(); IfcMeasureWithUnit* BaseQuantity(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return STRING; case 7: return ENUMERATION; case 8: return ENTITY; } return IfcResource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "ResourceIdentifier"; case 6: return "ResourceGroup"; case 7: return "ResourceConsumption"; case 8: return "BaseQuantity"; } return IfcResource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22521,6 +24259,10 @@ public: /// Controls have assignments from products, processes, or other objects by using the relationship object IfcRelAssignsToControl. class IfcControl : public IfcObject { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > Controls(); // INVERSE IfcRelAssignsToControl::RelatingControl bool is(Type::Enum v) const; Type::Enum type() const; @@ -22568,6 +24310,10 @@ public: /// Figure 168 — Cost assignment class IfcCostItem : public IfcControl { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22637,6 +24383,10 @@ public: /// /// IFC2x4 CHANGE The attribute has been made optional. IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 13; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; case 6: return ENTITY; case 7: return ENTITY; case 8: return STRING; case 9: return ENTITY_LIST; case 10: return ENTITY; case 11: return STRING; case 12: return ENUMERATION; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "SubmittedBy"; case 6: return "PreparedBy"; case 7: return "SubmittedOn"; case 8: return "Status"; case 9: return "TargetUsers"; case 10: return "UpdateDate"; case 11: return "ID"; case 12: return "PredefinedType"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22728,6 +24478,10 @@ class IfcCoveringType : public IfcBuildingElementType { public: /// Predefined types to define the particular type of the covering. There may be property set definitions available for each predefined type. IfcCoveringTypeEnum::IfcCoveringTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22748,6 +24502,10 @@ public: /// 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 IfcCrewResource : public IfcConstructionResource { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcConstructionResource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcConstructionResource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22781,6 +24539,10 @@ class IfcCurtainWallType : public IfcBuildingElementType { public: /// Identifies the predefined types of a curtain wall element from which the type required may be set. IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22791,6 +24553,10 @@ public: }; class IfcDimensionCurveDirectedCallout : public IfcDraughtingCallout { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDraughtingCallout::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDraughtingCallout::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22829,6 +24595,10 @@ public: /// IFC2x4. class IfcDistributionElementType : public IfcElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22904,6 +24674,10 @@ public: /// 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 IfcDistributionFlowElementType : public IfcDistributionElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22932,6 +24706,10 @@ public: bool hasRatedPowerInput(); IfcPowerMeasure RatedPowerInput(); int InputPhase(); + virtual unsigned int getArgumentCount() const { return 14; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENUMERATION; case 7: return DOUBLE; case 8: return DOUBLE; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; case 13: return INT; } return IfcEnergyProperties::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "ElectricCurrentType"; case 7: return "InputVoltage"; case 8: return "InputFrequency"; case 9: return "FullLoadCurrent"; case 10: return "MinimumCircuitCurrent"; case 11: return "MaximumPowerInput"; case 12: return "RatedPowerInput"; case 13: return "InputPhase"; } return IfcEnergyProperties::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -22999,11 +24777,15 @@ public: bool hasTag(); /// 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. IfcIdentifier Tag(); - SHARED_PTR< IfcTemplatedEntityList > HasStructuralMember(); // INVERSE IfcRelConnectsStructuralElement::RelatingElement + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return STRING; } return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "Tag"; } return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > FillsVoids(); // INVERSE IfcRelFillsElement::RelatedBuildingElement SHARED_PTR< IfcTemplatedEntityList > ConnectedTo(); // INVERSE IfcRelConnectsElements::RelatingElement SHARED_PTR< IfcTemplatedEntityList > HasCoverings(); // INVERSE IfcRelCoversBldgElements::RelatingBuildingElement SHARED_PTR< IfcTemplatedEntityList > HasProjections(); // INVERSE IfcRelProjectsElement::RelatingElement + SHARED_PTR< IfcTemplatedEntityList > HasStructuralMember(); // INVERSE IfcRelConnectsStructuralElement::RelatingElement SHARED_PTR< IfcTemplatedEntityList > ReferencedInStructures(); // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements SHARED_PTR< IfcTemplatedEntityList > HasPorts(); // INVERSE IfcRelConnectsPortToElement::RelatedElement SHARED_PTR< IfcTemplatedEntityList > HasOpenings(); // INVERSE IfcRelVoidsElement::RelatingBuildingElement @@ -23123,6 +24905,10 @@ public: /// /// IFC2x4 CHANGE  The attribute has been changed to be optional. IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; case 9: return ENUMERATION; } return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "AssemblyPlace"; case 9: return "PredefinedType"; } return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23210,6 +24996,10 @@ public: /// element components in the IfcElementQuantity. class IfcElementComponent : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23229,6 +25019,10 @@ public: /// Release 2x2 class IfcElementComponentType : public IfcElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23270,6 +25064,10 @@ public: IfcPositiveLengthMeasure SemiAxis1(); /// The second radius of the ellipse which shall be positive. IfcPositiveLengthMeasure SemiAxis2(); + virtual unsigned int getArgumentCount() const { return 3; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; case 2: return DOUBLE; } return IfcConic::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "SemiAxis1"; case 2: return "SemiAxis2"; } return IfcConic::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23303,6 +25101,10 @@ public: /// HISTORY: New entity in IFC Release 2x2. class IfcEnergyConversionDeviceType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23313,6 +25115,10 @@ public: }; class IfcEquipmentElement : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23323,6 +25129,10 @@ public: }; class IfcEquipmentStandard : public IfcControl { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23361,6 +25171,10 @@ class IfcEvaporativeCoolerType : public IfcEnergyConversionDeviceType { public: /// Defines the type of evaporative cooler. IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23399,6 +25213,10 @@ class IfcEvaporatorType : public IfcEnergyConversionDeviceType { public: /// Defines the type of evaporator. IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23433,6 +25251,10 @@ public: /// Figure 257 — Faceted B-rep class IfcFacetedBrep : public IfcManifoldSolidBrep { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcManifoldSolidBrep::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcManifoldSolidBrep::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23469,6 +25291,10 @@ class IfcFacetedBrepWithVoids : public IfcManifoldSolidBrep { public: /// Set of closed shells defining voids within the solid. SHARED_PTR< IfcTemplatedEntityList > Voids(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return ENTITY_LIST; } return IfcManifoldSolidBrep::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Voids"; } return IfcManifoldSolidBrep::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23487,6 +25313,10 @@ public: /// Attribute PredefinedType added. class IfcFastener : public IfcElementComponent { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementComponent::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementComponent::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23520,6 +25350,10 @@ public: /// Pset_FastenerWeld (WELD) class IfcFastenerType : public IfcElementComponentType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementComponentType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementComponentType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23624,6 +25458,10 @@ public: /// complex shape. class IfcFeatureElement : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23689,6 +25527,10 @@ public: /// level of its subtypes. class IfcFeatureElementAddition : public IfcFeatureElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcFeatureElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcFeatureElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ProjectsElements(); // INVERSE IfcRelProjectsElement::RelatedFeatureElement bool is(Type::Enum v) const; Type::Enum type() const; @@ -23750,6 +25592,10 @@ public: /// subtypes. class IfcFeatureElementSubtraction : public IfcFeatureElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcFeatureElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcFeatureElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > VoidsElements(); // INVERSE IfcRelVoidsElement::RelatedOpeningElement bool is(Type::Enum v) const; Type::Enum type() const; @@ -23783,6 +25629,10 @@ public: /// HISTORY: New entity in IFC Release 2x2. class IfcFlowControllerType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23816,6 +25666,10 @@ public: /// HISTORY: New entity in IFC Release 2x2. class IfcFlowFittingType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23860,6 +25714,10 @@ class IfcFlowMeterType : public IfcFlowControllerType { public: /// Defines the type of flow meter. IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowControllerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowControllerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23892,6 +25750,10 @@ public: /// HISTORY: New entity in IFC Release 2x2. class IfcFlowMovingDeviceType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23933,6 +25795,10 @@ public: /// IfcMaterial : For elements comprised of a single material where profiles are not applicable, this indicates the material. class IfcFlowSegmentType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23950,6 +25816,10 @@ public: /// HISTORY: New entity in IFC Release 2x2. class IfcFlowStorageDeviceType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23967,6 +25837,10 @@ public: /// HISTORY: New entity in IFC Release 2x2. class IfcFlowTerminalType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -23985,6 +25859,10 @@ public: /// HISTORY: New entity in IFC Release 2x2. class IfcFlowTreatmentDeviceType : public IfcDistributionFlowElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24099,6 +25977,10 @@ public: /// 'MappedRepresentation' class IfcFurnishingElement : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24109,6 +25991,10 @@ public: }; class IfcFurnitureStandard : public IfcControl { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24120,6 +26006,10 @@ public: class IfcGasTerminalType : public IfcFlowTerminalType { public: IfcGasTerminalTypeEnum::IfcGasTerminalTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24234,6 +26124,10 @@ public: bool hasWAxes(); /// List of grid axes defining the third row of grid lines. It may be given in the case of a triangular grid. SHARED_PTR< IfcTemplatedEntityList > WAxes(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENTITY_LIST; case 8: return ENTITY_LIST; case 9: return ENTITY_LIST; } return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "UAxes"; case 8: return "VAxes"; case 9: return "WAxes"; } return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ContainedInStructure(); // INVERSE IfcRelContainedInSpatialStructure::RelatedElements bool is(Type::Enum v) const; Type::Enum type() const; @@ -24275,6 +26169,10 @@ public: /// Controls: affecting the group using IfcRelAssignsToControl class IfcGroup : public IfcObject { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcObject::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcObject::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > IsGroupedBy(); // INVERSE IfcRelAssignsToGroup::RelatingGroup bool is(Type::Enum v) const; Type::Enum type() const; @@ -24317,6 +26215,10 @@ class IfcHeatExchangerType : public IfcEnergyConversionDeviceType { public: /// Defines the basic types of heat exchanger (e.g., plate, shell and tube, etc.). IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24355,6 +26257,10 @@ class IfcHumidifierType : public IfcEnergyConversionDeviceType { public: /// Defines the type of humidifier. IfcHumidifierTypeEnum::IfcHumidifierTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24393,6 +26299,10 @@ public: bool hasOriginalValue(); /// An estimate of the original cost value of the inventory. IfcCostValue* OriginalValue(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENUMERATION; case 6: return ENTITY; case 7: return ENTITY_LIST; case 8: return ENTITY; case 9: return ENTITY; case 10: return ENTITY; } return IfcGroup::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "InventoryType"; case 6: return "Jurisdiction"; case 7: return "ResponsiblePersons"; case 8: return "LastUpdateDate"; case 9: return "CurrentValue"; case 10: return "OriginalValue"; } return IfcGroup::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24432,6 +26342,10 @@ class IfcJunctionBoxType : public IfcFlowFittingType { public: /// Identifies the predefined types of junction boxes from which the type required may be set. IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowFittingType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowFittingType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24469,6 +26383,10 @@ public: /// Whether the optional attribute SkillSet is defined for this IfcLaborResource bool hasSkillSet(); IfcText SkillSet(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return STRING; } return IfcConstructionResource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "SkillSet"; } return IfcConstructionResource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24510,6 +26428,10 @@ class IfcLampType : public IfcFlowTerminalType { public: /// Identifies the predefined types of lamp from which the type required may be set. IfcLampTypeEnum::IfcLampTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24553,6 +26475,10 @@ class IfcLightFixtureType : public IfcFlowTerminalType { public: /// Identifies the predefined types of light fixture from which the type required may be set. IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24563,6 +26489,10 @@ public: }; class IfcLinearDimension : public IfcDimensionCurveDirectedCallout { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24608,6 +26538,10 @@ public: /// Whether the optional attribute NominalLength is defined for this IfcMechanicalFastener bool hasNominalLength(); IfcPositiveLengthMeasure NominalLength(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return DOUBLE; case 9: return DOUBLE; } return IfcFastener::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "NominalDiameter"; case 9: return "NominalLength"; } return IfcFastener::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24653,6 +26587,10 @@ public: /// Pset_MechanicalFastenerBolt (BOLT) class IfcMechanicalFastenerType : public IfcFastenerType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcFastenerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcFastenerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24766,6 +26704,10 @@ class IfcMemberType : public IfcBuildingElementType { public: /// Identifies the predefined types of a linear structural member element from which the type required may be set. IfcMemberTypeEnum::IfcMemberTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24805,6 +26747,10 @@ class IfcMotorConnectionType : public IfcEnergyConversionDeviceType { public: /// Identifies the predefined types of motor connection from which the type required may be set. IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24820,6 +26766,10 @@ public: /// Whether the optional attribute PunchList is defined for this IfcMove bool hasPunchList(); std::vector /*[1:?]*/ PunchList(); + virtual unsigned int getArgumentCount() const { return 13; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 10: return ENTITY; case 11: return ENTITY; case 12: return VECTOR_STRING; } return IfcTask::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 10: return "MoveFrom"; case 11: return "MoveTo"; case 12: return "PunchList"; } return IfcTask::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -24841,6 +26791,10 @@ public: /// /// IFC2x4 CHANGE Attribute made optional. IfcOccupantTypeEnum::IfcOccupantTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 6: return ENUMERATION; } return IfcActor::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 6: return "PredefinedType"; } return IfcActor::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25053,6 +27007,10 @@ public: /// Figure 36 — Opening with multiple extrusions class IfcOpeningElement : public IfcFeatureElementSubtraction { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcFeatureElementSubtraction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcFeatureElementSubtraction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasFillings(); // INVERSE IfcRelFillsElement::RelatingOpeningElement bool is(Type::Enum v) const; Type::Enum type() const; @@ -25065,6 +27023,10 @@ public: class IfcOrderAction : public IfcTask { public: IfcIdentifier ActionID(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 10: return STRING; } return IfcTask::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 10: return "ActionID"; } return IfcTask::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25106,6 +27068,10 @@ class IfcOutletType : public IfcFlowTerminalType { public: /// Identifies the predefined types of outlet from which the type required may be set. IfcOutletTypeEnum::IfcOutletTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25123,6 +27089,10 @@ class IfcPerformanceHistory : public IfcControl { public: /// Describes the applicable building life-cycle phase. Typical values should be DESIGNDEVELOPMENT, SCHEMATICDEVELOPMENT, CONSTRUCTIONDOCUMENT, CONSTRUCTION, ASBUILT, COMMISSIONING, OPERATION, etc. IfcLabel LifeCyclePhase(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "LifeCyclePhase"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25171,6 +27141,10 @@ public: class IfcPermit : public IfcControl { public: IfcIdentifier PermitID(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "PermitID"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25212,6 +27186,10 @@ class IfcPipeFittingType : public IfcFlowFittingType { public: /// The type of pipe fitting. IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowFittingType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowFittingType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25257,6 +27235,10 @@ class IfcPipeSegmentType : public IfcFlowSegmentType { public: /// The type of pipe segment. IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowSegmentType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowSegmentType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25346,6 +27328,10 @@ class IfcPlateType : public IfcBuildingElementType { public: /// Identifies the predefined types of a planar member element from which the type required may be set. IfcPlateTypeEnum::IfcPlateTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25372,6 +27358,10 @@ class IfcPolyline : public IfcBoundedCurve { public: /// The points defining the polyline. SHARED_PTR< IfcTemplatedEntityList > Points(); + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY_LIST; } return IfcBoundedCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Points"; } return IfcBoundedCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25435,6 +27425,10 @@ public: /// its subtypes. class IfcPort : public IfcProduct { public: + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcProduct::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcProduct::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ContainedIn(); // INVERSE IfcRelConnectsPortToElement::RelatingPort SHARED_PTR< IfcTemplatedEntityList > ConnectedFrom(); // INVERSE IfcRelConnectsPorts::RelatedPort SHARED_PTR< IfcTemplatedEntityList > ConnectedTo(); // INVERSE IfcRelConnectsPorts::RelatingPort @@ -25557,6 +27551,10 @@ public: /// Whether the optional attribute UserDefinedProcedureType is defined for this IfcProcedure bool hasUserDefinedProcedureType(); IfcLabel UserDefinedProcedureType(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return ENUMERATION; case 7: return STRING; } return IfcProcess::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "ProcedureID"; case 6: return "ProcedureType"; case 7: return "UserDefinedProcedureType"; } return IfcProcess::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25627,6 +27625,10 @@ public: /// DELAYED /// DONE IfcLabel Status(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return ENUMERATION; case 7: return STRING; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "ID"; case 6: return "PredefinedType"; case 7: return "Status"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25639,6 +27641,10 @@ class IfcProjectOrderRecord : public IfcControl { public: SHARED_PTR< IfcTemplatedEntityList > Records(); IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY_LIST; case 6: return ENUMERATION; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "Records"; case 6: return "PredefinedType"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25756,6 +27762,10 @@ public: /// RepresentationType : 'Brep' class IfcProjectionElement : public IfcFeatureElementAddition { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcFeatureElementAddition::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcFeatureElementAddition::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25803,6 +27813,10 @@ class IfcProtectiveDeviceType : public IfcFlowControllerType { public: /// Identifies the predefined types of protective device from which the type required may be set. IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowControllerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowControllerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25843,6 +27857,10 @@ class IfcPumpType : public IfcFlowMovingDeviceType { public: /// Defines the type of pump typically used in building services. IfcPumpTypeEnum::IfcPumpTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowMovingDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowMovingDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25853,6 +27871,10 @@ public: }; class IfcRadiusDimension : public IfcDimensionCurveDirectedCallout { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25885,6 +27907,10 @@ class IfcRailingType : public IfcBuildingElementType { public: /// Identifies the predefined types of a railing element from which the type required may be set. IfcRailingTypeEnum::IfcRailingTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25917,6 +27943,10 @@ class IfcRampFlightType : public IfcBuildingElementType { public: /// Identifies the predefined types of a ramp flight element from which the type required may be set. IfcRampFlightTypeEnum::IfcRampFlightTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25949,6 +27979,10 @@ public: /// IFC2x4 CHANGE The attributes RelatingObject and RelatedObjects are demoted from the supertype IfcRelDecomposes. class IfcRelAggregates : public IfcRelDecomposes { public: + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcRelDecomposes::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcRelDecomposes::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -25962,6 +27996,10 @@ public: /// Whether the optional attribute TimeForTask is defined for this IfcRelAssignsTasks bool hasTimeForTask(); IfcScheduleTimeControl* TimeForTask(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENTITY; } return IfcRelAssignsToControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "TimeForTask"; } return IfcRelAssignsToControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26011,6 +28049,10 @@ class IfcSanitaryTerminalType : public IfcFlowTerminalType { public: /// Identifies the predefined types of sanitary terminal from which the type required may be set. IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26075,6 +28117,10 @@ public: /// Whether the optional attribute Completion is defined for this IfcScheduleTimeControl bool hasCompletion(); IfcPositiveRatioMeasure Completion(); + virtual unsigned int getArgumentCount() const { return 23; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; case 6: return ENTITY; case 7: return ENTITY; case 8: return ENTITY; case 9: return ENTITY; case 10: return ENTITY; case 11: return ENTITY; case 12: return ENTITY; case 13: return DOUBLE; case 14: return DOUBLE; case 15: return DOUBLE; case 16: return DOUBLE; case 17: return DOUBLE; case 18: return BOOL; case 19: return ENTITY; case 20: return DOUBLE; case 21: return DOUBLE; case 22: return DOUBLE; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "ActualStart"; case 6: return "EarlyStart"; case 7: return "LateStart"; case 8: return "ScheduleStart"; case 9: return "ActualFinish"; case 10: return "EarlyFinish"; case 11: return "LateFinish"; case 12: return "ScheduleFinish"; case 13: return "ScheduleDuration"; case 14: return "ActualDuration"; case 15: return "RemainingTime"; case 16: return "FreeFloat"; case 17: return "TotalFloat"; case 18: return "IsCritical"; case 19: return "StatusTime"; case 20: return "StartFloat"; case 21: return "FinishFloat"; case 22: return "Completion"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ScheduleTimeControlAssigned(); // INVERSE IfcRelAssignsTasks::TimeForTask bool is(Type::Enum v) const; Type::Enum type() const; @@ -26088,6 +28134,10 @@ class IfcServiceLife : public IfcControl { public: IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum ServiceLifeType(); IfcTimeMeasure ServiceLifeDuration(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENUMERATION; case 6: return DOUBLE; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "ServiceLifeType"; case 6: return "ServiceLifeDuration"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26310,6 +28360,10 @@ public: bool hasSiteAddress(); /// Address given to the site for postal purposes. IfcPostalAddress* SiteAddress(); + virtual unsigned int getArgumentCount() const { return 14; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return VECTOR_INT; case 10: return VECTOR_INT; case 11: return DOUBLE; case 12: return STRING; case 13: return ENTITY; } return IfcSpatialStructureElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "RefLatitude"; case 10: return "RefLongitude"; case 11: return "RefElevation"; case 12: return "LandTitleNumber"; case 13: return "SiteAddress"; } return IfcSpatialStructureElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26399,6 +28453,10 @@ class IfcSlabType : public IfcBuildingElementType { public: /// Identifies the predefined types of a slab element from which the type required may be set. IfcSlabTypeEnum::IfcSlabTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26664,6 +28722,10 @@ public: bool hasElevationWithFlooring(); /// 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. IfcLengthMeasure ElevationWithFlooring(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; case 10: return DOUBLE; } return IfcSpatialStructureElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "InteriorOrExteriorSpace"; case 10: return "ElevationWithFlooring"; } return IfcSpatialStructureElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasCoverings(); // INVERSE IfcRelCoversSpaces::RelatedSpace SHARED_PTR< IfcTemplatedEntityList > BoundedBy(); // INVERSE IfcRelSpaceBoundary::RelatingSpace bool is(Type::Enum v) const; @@ -26708,6 +28770,10 @@ class IfcSpaceHeaterType : public IfcEnergyConversionDeviceType { public: /// Enumeration of possible types of space heater (e.g., baseboard heater, convector, radiator, etc.). IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26729,6 +28795,10 @@ public: bool hasRequestedLocation(); IfcSpatialStructureElement* RequestedLocation(); IfcAreaMeasure StandardRequiredArea(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return DOUBLE; case 7: return DOUBLE; case 8: return ENTITY; case 9: return DOUBLE; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "SpaceProgramIdentifier"; case 6: return "MaxRequiredArea"; case 7: return "MinRequiredArea"; case 8: return "RequestedLocation"; case 9: return "StandardRequiredArea"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasInteractionReqsFrom(); // INVERSE IfcRelInteractionRequirements::RelatedSpaceProgram SHARED_PTR< IfcTemplatedEntityList > HasInteractionReqsTo(); // INVERSE IfcRelInteractionRequirements::RelatingSpaceProgram bool is(Type::Enum v) const; @@ -26824,6 +28894,10 @@ class IfcSpaceType : public IfcSpatialStructureElementType { public: /// Predefined types to define the particular type of space. There may be property set definitions available for each predefined type. IfcSpaceTypeEnum::IfcSpaceTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcSpatialStructureElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcSpatialStructureElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26862,6 +28936,10 @@ class IfcStackTerminalType : public IfcFlowTerminalType { public: /// Identifies the predefined types of stack terminal from which the type required may be set. IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26894,6 +28972,10 @@ class IfcStairFlightType : public IfcBuildingElementType { public: /// Identifies the predefined types of a stair flight element from which the type required may be set. IfcStairFlightTypeEnum::IfcStairFlightTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26928,6 +29010,10 @@ public: /// Whether the optional attribute CausedBy is defined for this IfcStructuralAction bool hasCausedBy(); IfcStructuralReaction* CausedBy(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return BOOL; case 10: return ENTITY; } return IfcStructuralActivity::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "DestabilizingLoad"; case 10: return "CausedBy"; } return IfcStructuralActivity::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -26945,6 +29031,10 @@ public: bool hasAppliedCondition(); /// 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. IfcBoundaryCondition* AppliedCondition(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENTITY; } return IfcStructuralItem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "AppliedCondition"; } return IfcStructuralItem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ConnectsStructuralMembers(); // INVERSE IfcRelConnectsStructuralMember::RelatedStructuralConnection bool is(Type::Enum v) const; Type::Enum type() const; @@ -26973,6 +29063,10 @@ public: /// The reference curve must not be parallel with Axis at any point within the curve connections's domain. class IfcStructuralCurveConnection : public IfcStructuralConnection { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralConnection::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralConnection::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27022,6 +29116,10 @@ class IfcStructuralCurveMember : public IfcStructuralMember { public: /// Type of member with respect to its load carrying behavior in this analysis idealization. IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENUMERATION; } return IfcStructuralMember::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "PredefinedType"; } return IfcStructuralMember::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27052,6 +29150,10 @@ public: /// Instances of IfcStructuralCurveMemberVarying may have a topology representation which contains a single IfcEdgeLoop, based upon the edges of the parts. class IfcStructuralCurveMemberVarying : public IfcStructuralCurveMember { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralCurveMember::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralCurveMember::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27070,6 +29172,10 @@ public: class IfcStructuralLinearAction : public IfcStructuralAction { public: IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum ProjectedOrTrue(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 11: return ENUMERATION; } return IfcStructuralAction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 11: return "ProjectedOrTrue"; } return IfcStructuralAction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27082,6 +29188,10 @@ class IfcStructuralLinearActionVarying : public IfcStructuralLinearAction { public: IfcShapeAspect* VaryingAppliedLoadLocation(); SHARED_PTR< IfcTemplatedEntityList > SubsequentAppliedLoads(); + virtual unsigned int getArgumentCount() const { return 14; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 12: return ENTITY; case 13: return ENTITY_LIST; } return IfcStructuralLinearAction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 12: return "VaryingAppliedLoadLocation"; case 13: return "SubsequentAppliedLoads"; } return IfcStructuralLinearAction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27134,11 +29244,15 @@ public: /// Whether the optional attribute Coefficient is defined for this IfcStructuralLoadGroup bool hasCoefficient(); /// 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. - IfcRatioMeasure Coefficient(); + IfcPositiveRatioMeasure Coefficient(); /// Whether the optional attribute Purpose is defined for this IfcStructuralLoadGroup bool hasPurpose(); /// 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. IfcLabel Purpose(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENUMERATION; case 6: return ENUMERATION; case 7: return ENUMERATION; case 8: return DOUBLE; case 9: return STRING; } return IfcGroup::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "PredefinedType"; case 6: return "ActionType"; case 7: return "ActionSource"; case 8: return "Coefficient"; case 9: return "Purpose"; } return IfcGroup::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > SourceOfResultGroup(); // INVERSE IfcStructuralResultGroup::ResultForLoadGroup SHARED_PTR< IfcTemplatedEntityList > LoadGroupFor(); // INVERSE IfcStructuralAnalysisModel::LoadedBy bool is(Type::Enum v) const; @@ -27159,6 +29273,10 @@ public: class IfcStructuralPlanarAction : public IfcStructuralAction { public: IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum ProjectedOrTrue(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 11: return ENUMERATION; } return IfcStructuralAction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 11: return "ProjectedOrTrue"; } return IfcStructuralAction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27171,6 +29289,10 @@ class IfcStructuralPlanarActionVarying : public IfcStructuralPlanarAction { public: IfcShapeAspect* VaryingAppliedLoadLocation(); SHARED_PTR< IfcTemplatedEntityList > SubsequentAppliedLoads(); + virtual unsigned int getArgumentCount() const { return 14; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 12: return ENTITY; case 13: return ENTITY_LIST; } return IfcStructuralPlanarAction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 12: return "VaryingAppliedLoadLocation"; case 13: return "SubsequentAppliedLoads"; } return IfcStructuralPlanarAction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27226,6 +29348,10 @@ public: /// IfcStructuralLoadSingleDisplacement. class IfcStructuralPointAction : public IfcStructuralAction { public: + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralAction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralAction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27249,6 +29375,10 @@ public: /// 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 IfcStructuralPointConnection : public IfcStructuralConnection { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralConnection::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralConnection::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27302,6 +29432,10 @@ public: /// IfcStructuralLoadSingleDisplacement. class IfcStructuralPointReaction : public IfcStructuralReaction { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralReaction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralReaction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27324,6 +29458,10 @@ public: IfcStructuralLoadGroup* ResultForLoadGroup(); /// This value allows to easily recognize whether a linear analysis has been applied (allowing the superposition of analysis results). bool IsLinear(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENUMERATION; case 6: return ENTITY; case 7: return BOOL; } return IfcGroup::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "TheoryType"; case 6: return "ResultForLoadGroup"; case 7: return "IsLinear"; } return IfcGroup::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ResultGroupFor(); // INVERSE IfcStructuralAnalysisModel::HasResults bool is(Type::Enum v) const; Type::Enum type() const; @@ -27347,6 +29485,10 @@ public: /// 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 IfcStructuralSurfaceConnection : public IfcStructuralConnection { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcStructuralConnection::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcStructuralConnection::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27387,6 +29529,10 @@ public: /// Whether the optional attribute JobDescription is defined for this IfcSubContractResource bool hasJobDescription(); IfcText JobDescription(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENTITY; case 10: return STRING; } return IfcConstructionResource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "SubContractor"; case 10: return "JobDescription"; } return IfcConstructionResource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27439,6 +29585,10 @@ class IfcSwitchingDeviceType : public IfcFlowControllerType { public: /// Identifies the predefined types of switch from which the type required may be set. IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowControllerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowControllerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27466,6 +29616,10 @@ public: /// IFC Release 1.0 class IfcSystem : public IfcGroup { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGroup::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGroup::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > ServicesBuildings(); // INVERSE IfcRelServicesBuildings::RelatingSystem bool is(Type::Enum v) const; Type::Enum type() const; @@ -27511,6 +29665,10 @@ class IfcTankType : public IfcFlowStorageDeviceType { public: /// Defines the type of tank. IfcTankTypeEnum::IfcTankTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowStorageDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowStorageDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27526,6 +29684,10 @@ public: SHARED_PTR< IfcTemplatedEntityList > ApplicableDates(); IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum TimeSeriesScheduleType(); IfcTimeSeries* TimeSeries(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY_LIST; case 6: return ENUMERATION; case 7: return ENTITY; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "ApplicableDates"; case 6: return "TimeSeriesScheduleType"; case 7: return "TimeSeries"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27565,6 +29727,10 @@ class IfcTransformerType : public IfcEnergyConversionDeviceType { public: /// Identifies the predefined types of transformer from which the type required may be set. IfcTransformerTypeEnum::IfcTransformerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27702,6 +29868,10 @@ public: bool hasCapacityByNumber(); /// Capacity of the transportation element measured in numbers of person. IfcCountMeasure CapacityByNumber(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; case 9: return DOUBLE; case 10: return DOUBLE; } return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "OperationType"; case 9: return "CapacityByWeight"; case 10: return "CapacityByNumber"; } return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27800,6 +29970,10 @@ public: bool SenseAgreement(); /// Where both parameter and point are present at either end of the curve this indicates the preferred form. IfcTrimmingPreference::IfcTrimmingPreference MasterRepresentation(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return ENTITY; case 1: return ENTITY_LIST; case 2: return ENTITY_LIST; case 3: return BOOL; case 4: return ENUMERATION; } return IfcBoundedCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "BasisCurve"; case 1: return "Trim1"; case 2: return "Trim2"; case 3: return "SenseAgreement"; case 4: return "MasterRepresentation"; } return IfcBoundedCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27841,6 +30015,10 @@ class IfcTubeBundleType : public IfcEnergyConversionDeviceType { public: /// Defines the type of tube bundle. IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27881,6 +30059,10 @@ class IfcUnitaryEquipmentType : public IfcEnergyConversionDeviceType { public: /// The type of unitary equipment. IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -27931,6 +30113,10 @@ class IfcValveType : public IfcFlowControllerType { public: /// The type of valve. IfcValveTypeEnum::IfcValveTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowControllerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowControllerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28027,6 +30213,10 @@ public: /// shown above. class IfcVirtualElement : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28123,6 +30313,10 @@ class IfcWallType : public IfcBuildingElementType { public: /// Identifies the predefined types of a wall element from which the type required may be set. IfcWallTypeEnum::IfcWallTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28171,6 +30365,10 @@ class IfcWasteTerminalType : public IfcFlowTerminalType { public: /// Identifies the predefined types of waste terminal from which the type required may be set. IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28256,6 +30454,10 @@ public: /// Whether the optional attribute UserDefinedControlType is defined for this IfcWorkControl bool hasUserDefinedControlType(); IfcLabel UserDefinedControlType(); + virtual unsigned int getArgumentCount() const { return 15; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return ENTITY; case 7: return ENTITY_LIST; case 8: return STRING; case 9: return DOUBLE; case 10: return DOUBLE; case 11: return ENTITY; case 12: return ENTITY; case 13: return ENUMERATION; case 14: return STRING; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "Identifier"; case 6: return "CreationDate"; case 7: return "Creators"; case 8: return "Purpose"; case 9: return "Duration"; case 10: return "TotalFloat"; case 11: return "StartTime"; case 12: return "FinishTime"; case 13: return "WorkControlType"; case 14: return "UserDefinedControlType"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28291,6 +30493,10 @@ public: /// Figure 18 — Work plan relationships class IfcWorkPlan : public IfcWorkControl { public: + virtual unsigned int getArgumentCount() const { return 15; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcWorkControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcWorkControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28341,6 +30547,10 @@ public: /// Figure 19 — Work schedule relationships class IfcWorkSchedule : public IfcWorkControl { public: + virtual unsigned int getArgumentCount() const { return 15; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcWorkControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcWorkControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28436,6 +30646,10 @@ public: /// requirements class IfcZone : public IfcGroup { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGroup::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGroup::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28446,6 +30660,10 @@ public: }; class Ifc2DCompositeCurve : public IfcCompositeCurve { public: + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcCompositeCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcCompositeCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28495,6 +30713,10 @@ public: class IfcActionRequest : public IfcControl { public: IfcIdentifier RequestID(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "RequestID"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28533,6 +30755,10 @@ class IfcAirTerminalBoxType : public IfcFlowControllerType { public: /// The air terminal box type. IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowControllerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowControllerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28570,6 +30796,10 @@ public: class IfcAirTerminalType : public IfcFlowTerminalType { public: IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28608,6 +30838,10 @@ class IfcAirToAirHeatRecoveryType : public IfcEnergyConversionDeviceType { public: /// Defines the type of air to air heat recovery device. IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28618,6 +30852,10 @@ public: }; class IfcAngularDimension : public IfcDimensionCurveDirectedCallout { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28673,6 +30911,10 @@ public: IfcCalendarDate* IncorporationDate(); /// The current value of an asset within the accounting rules and procedures of an organization. IfcCostValue* DepreciatedValue(); + virtual unsigned int getArgumentCount() const { return 14; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return STRING; case 6: return ENTITY; case 7: return ENTITY; case 8: return ENTITY; case 9: return ENTITY; case 10: return ENTITY; case 11: return ENTITY; case 12: return ENTITY; case 13: return ENTITY; } return IfcGroup::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "AssetID"; case 6: return "OriginalValue"; case 7: return "CurrentValue"; case 8: return "TotalReplacementCost"; case 9: return "Owner"; case 10: return "User"; case 11: return "ResponsiblePerson"; case 12: return "IncorporationDate"; case 13: return "DepreciatedValue"; } return IfcGroup::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28742,6 +30984,10 @@ public: bool ClosedCurve(); /// Indication whether the curve self-intersects or not; it is for information only. bool SelfIntersect(); + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 0: return INT; case 1: return ENTITY_LIST; case 2: return ENUMERATION; case 3: return BOOL; case 4: return BOOL; } return IfcBoundedCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 0: return "Degree"; case 1: return "ControlPointsList"; case 2: return "CurveForm"; case 3: return "ClosedCurve"; case 4: return "SelfIntersect"; } return IfcBoundedCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28852,6 +31098,10 @@ class IfcBeamType : public IfcBuildingElementType { public: /// Identifies the predefined types of a beam element from which the type required may be set. IfcBeamTypeEnum::IfcBeamTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28862,6 +31112,10 @@ public: }; class IfcBezierCurve : public IfcBSplineCurve { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBSplineCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBSplineCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -28903,6 +31157,10 @@ class IfcBoilerType : public IfcEnergyConversionDeviceType { public: /// Defines types of boilers. IfcBoilerTypeEnum::IfcBoilerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29276,6 +31534,10 @@ public: /// IfcRepresentationMap. class IfcBuildingElement : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29286,6 +31548,10 @@ public: }; class IfcBuildingElementComponent : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29313,6 +31579,10 @@ public: /// attribute PredefinedType added. class IfcBuildingElementPart : public IfcBuildingElementComponent { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElementComponent::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElementComponent::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29516,6 +31786,10 @@ public: /// Whether the optional attribute CompositionType is defined for this IfcBuildingElementProxy bool hasCompositionType(); IfcElementCompositionEnum::IfcElementCompositionEnum CompositionType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "CompositionType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29562,6 +31836,10 @@ class IfcBuildingElementProxyType : public IfcBuildingElementType { public: /// 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. IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcBuildingElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcBuildingElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29600,6 +31878,10 @@ class IfcCableCarrierFittingType : public IfcFlowFittingType { public: /// Identifies the predefined types of cable carrier fitting from which the type required may be set. IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowFittingType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowFittingType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29644,6 +31926,10 @@ class IfcCableCarrierSegmentType : public IfcFlowSegmentType { public: /// Identifies the predefined types of cable carrier segment from which the type required may be set. IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowSegmentType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowSegmentType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29697,6 +31983,10 @@ class IfcCableSegmentType : public IfcFlowSegmentType { public: /// Identifies the predefined types of cable segment from which the type required may be set. IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowSegmentType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowSegmentType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29741,6 +32031,10 @@ class IfcChillerType : public IfcEnergyConversionDeviceType { public: /// Defines the typical types of chillers (e.g., air-cooled, water-cooled, etc.). IfcChillerTypeEnum::IfcChillerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29780,6 +32074,10 @@ class IfcCircle : public IfcConic { public: /// The radius of the circle, which shall be greater than zero. IfcPositiveLengthMeasure Radius(); + virtual unsigned int getArgumentCount() const { return 2; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 1: return DOUBLE; } return IfcConic::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 1: return "Radius"; } return IfcConic::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -29819,6 +32117,10 @@ class IfcCoilType : public IfcEnergyConversionDeviceType { public: /// Defines typical types of coils (e.g., Cooling, Heating, etc.) IfcCoilTypeEnum::IfcCoilTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30100,6 +32402,10 @@ public: /// IfcRepresentationMap. class IfcColumn : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30139,6 +32445,10 @@ class IfcCompressorType : public IfcFlowMovingDeviceType { public: /// Defines the type of compressor (e.g., hermetic, reciprocating, etc.). IfcCompressorTypeEnum::IfcCompressorTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowMovingDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowMovingDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30178,6 +32488,10 @@ class IfcCondenserType : public IfcEnergyConversionDeviceType { public: /// Defines the type of condenser. IfcCondenserTypeEnum::IfcCondenserTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30188,6 +32502,10 @@ public: }; class IfcCondition : public IfcGroup { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcGroup::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcGroup::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30200,6 +32518,10 @@ class IfcConditionCriterion : public IfcControl { public: IfcConditionCriterionSelect Criterion(); IfcDateTimeSelect CriterionDateTime(); + virtual unsigned int getArgumentCount() const { return 7; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENTITY; case 6: return ENTITY; } return IfcControl::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "Criterion"; case 6: return "CriterionDateTime"; } return IfcControl::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30232,6 +32554,10 @@ public: /// Figure 183 — Construction equipment resource assignment class IfcConstructionEquipmentResource : public IfcConstructionResource { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcConstructionResource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcConstructionResource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30274,6 +32600,10 @@ public: /// Whether the optional attribute UsageRatio is defined for this IfcConstructionMaterialResource bool hasUsageRatio(); IfcRatioMeasure UsageRatio(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENTITY_LIST; case 10: return DOUBLE; } return IfcConstructionResource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "Suppliers"; case 10: return "UsageRatio"; } return IfcConstructionResource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30299,6 +32629,10 @@ public: /// Figure 185 — Construction product resource assignment class IfcConstructionProductResource : public IfcConstructionResource { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcConstructionResource::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcConstructionResource::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30340,6 +32674,10 @@ class IfcCooledBeamType : public IfcEnergyConversionDeviceType { public: /// Defines the type of cooled beam. IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30385,6 +32723,10 @@ class IfcCoolingTowerType : public IfcEnergyConversionDeviceType { public: /// Defines the typical types of cooling towers (e.g., OpenTower, ClosedTower, CrossFlow, etc.). IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30623,6 +32965,10 @@ public: bool hasPredefinedType(); /// Predefined types to define the particular type of the covering. There may be property set definitions available for each predefined type. IfcCoveringTypeEnum::IfcCoveringTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "PredefinedType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > CoversSpaces(); // INVERSE IfcRelCoversSpaces::RelatedCoverings SHARED_PTR< IfcTemplatedEntityList > Covers(); // INVERSE IfcRelCoversBldgElements::RelatedCoverings bool is(Type::Enum v) const; @@ -30773,6 +33119,10 @@ public: /// components of the curtain wall are defined. class IfcCurtainWall : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30819,6 +33169,10 @@ class IfcDamperType : public IfcFlowControllerType { public: /// Type of damper. IfcDamperTypeEnum::IfcDamperTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowControllerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowControllerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -30829,6 +33183,10 @@ public: }; class IfcDiameterDimension : public IfcDimensionCurveDirectedCallout { public: + virtual unsigned int getArgumentCount() const { return 1; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDimensionCurveDirectedCallout::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -31012,6 +33370,10 @@ public: /// which multiple brackets can be mounted. class IfcDiscreteAccessory : public IfcElementComponent { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementComponent::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementComponent::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -31210,6 +33572,10 @@ public: /// which multiple brackets can be mounted. class IfcDiscreteAccessoryType : public IfcElementComponentType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElementComponentType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElementComponentType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -31259,6 +33625,10 @@ class IfcDistributionChamberElementType : public IfcDistributionFlowElementType public: /// Predefined types of distribution chambers. IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcDistributionFlowElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcDistributionFlowElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -31323,6 +33693,10 @@ public: /// 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 IfcDistributionControlElementType : public IfcDistributionElementType { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -31495,6 +33869,10 @@ public: /// RepresentationType : 'SectionedSpine' class IfcDistributionElement : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -31573,6 +33951,10 @@ public: /// Representations are further defined at subtypes; for example, parametric flow segments align material profiles with the 'Axis' representation. class IfcDistributionFlowElement : public IfcDistributionElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > HasControlElements(); // INVERSE IfcRelFlowControlElements::RelatingFlowElement bool is(Type::Enum v) const; Type::Enum type() const; @@ -31670,6 +34052,10 @@ public: bool hasFlowDirection(); /// Enumeration that identifies if this port is a Sink (inlet), a Source (outlet) or both a SinkAndSource. IfcFlowDirectionEnum::IfcFlowDirectionEnum FlowDirection(); + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 7: return ENUMERATION; } return IfcPort::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 7: return "FlowDirection"; } return IfcPort::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32048,6 +34434,10 @@ public: /// /// 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. IfcPositiveLengthMeasure OverallWidth(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return DOUBLE; case 9: return DOUBLE; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "OverallHeight"; case 9: return "OverallWidth"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32089,6 +34479,10 @@ class IfcDuctFittingType : public IfcFlowFittingType { public: /// The type of duct fitting. IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowFittingType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowFittingType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32130,6 +34524,10 @@ class IfcDuctSegmentType : public IfcFlowSegmentType { public: /// The type of duct segment. IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowSegmentType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowSegmentType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32168,6 +34566,10 @@ class IfcDuctSilencerType : public IfcFlowTreatmentDeviceType { public: /// The type of duct silencer. IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTreatmentDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTreatmentDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32181,6 +34583,10 @@ public: /// Whether the optional attribute FeatureLength is defined for this IfcEdgeFeature bool hasFeatureLength(); IfcPositiveLengthMeasure FeatureLength(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return DOUBLE; } return IfcFeatureElementSubtraction::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "FeatureLength"; } return IfcFeatureElementSubtraction::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32222,6 +34628,10 @@ class IfcElectricApplianceType : public IfcFlowTerminalType { public: /// Identifies the predefined types of electrical appliance from which the type required may be set. IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32261,6 +34671,10 @@ class IfcElectricFlowStorageDeviceType : public IfcFlowStorageDeviceType { public: /// Identifies the predefined types of electric flow storage devices from which the type required may be set. IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowStorageDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowStorageDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32305,6 +34719,10 @@ class IfcElectricGeneratorType : public IfcEnergyConversionDeviceType { public: /// Identifies the predefined types of electric generators from which the type required may be set. IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32316,6 +34734,10 @@ public: class IfcElectricHeaterType : public IfcFlowTerminalType { public: IfcElectricHeaterTypeEnum::IfcElectricHeaterTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32355,6 +34777,10 @@ class IfcElectricMotorType : public IfcEnergyConversionDeviceType { public: /// Identifies the predefined types of electric motor from which the type required may be set. IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcEnergyConversionDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcEnergyConversionDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32394,6 +34820,10 @@ class IfcElectricTimeControlType : public IfcFlowControllerType { public: /// Identifies the predefined types of electrical time control from which the type required may be set. IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowControllerType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowControllerType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32404,6 +34834,10 @@ public: }; class IfcElectricalCircuit : public IfcSystem { public: + virtual unsigned int getArgumentCount() const { return 5; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcSystem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcSystem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32414,6 +34848,10 @@ public: }; class IfcElectricalElement : public IfcElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32433,6 +34871,10 @@ public: /// 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 IfcEnergyConversionDevice : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32473,6 +34915,10 @@ class IfcFanType : public IfcFlowMovingDeviceType { public: /// Defines the type of fan typically used in building services. IfcFanTypeEnum::IfcFanTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowMovingDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowMovingDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32514,6 +34960,10 @@ class IfcFilterType : public IfcFlowTreatmentDeviceType { public: /// The type of air filter. IfcFilterTypeEnum::IfcFilterTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTreatmentDeviceType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTreatmentDeviceType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32559,6 +35009,10 @@ class IfcFireSuppressionTerminalType : public IfcFlowTerminalType { public: /// Identifies the predefined types of fire suppression terminal from which the type required may be set. IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcFlowTerminalType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcFlowTerminalType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32578,6 +35032,10 @@ public: /// 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 IfcFlowController : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32593,6 +35051,10 @@ public: /// 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 IfcFlowFitting : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32635,6 +35097,10 @@ class IfcFlowInstrumentType : public IfcDistributionControlElementType { public: /// Identifies the predefined types of flow instrument from which the type required may be set. IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcDistributionControlElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcDistributionControlElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32650,6 +35116,10 @@ public: /// 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 IfcFlowMovingDevice : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32683,6 +35153,10 @@ public: /// 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 IfcFlowSegment : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32702,6 +35176,10 @@ public: /// 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 IfcFlowStorageDevice : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32723,6 +35201,10 @@ public: /// 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 IfcFlowTerminal : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32738,6 +35220,10 @@ public: /// 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 IfcFlowTreatmentDevice : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -32774,6 +35260,10 @@ public: /// /// IFC 2x4 change:  Attribute made optional. Type information can be provided by IfcRelDefinesByType and IfcFootingType. IfcFootingTypeEnum::IfcFootingTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "PredefinedType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33034,6 +35524,10 @@ public: /// IfcRepresentationMap. class IfcMember : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33072,6 +35566,10 @@ public: /// /// 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. IfcPileConstructionEnum::IfcPileConstructionEnum ConstructionType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; case 9: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "PredefinedType"; case 9: return "ConstructionType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33310,6 +35808,10 @@ public: /// IfcRepresentationMap. class IfcPlate : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33458,6 +35960,10 @@ public: /// 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. IfcRailingTypeEnum::IfcRailingTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "PredefinedType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33602,6 +36108,10 @@ public: class IfcRamp : public IfcBuildingElement { public: IfcRampTypeEnum::IfcRampTypeEnum ShapeType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "ShapeType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33800,6 +36310,10 @@ public: /// Figure 114 — Ramp flight body class IfcRampFlight : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33811,6 +36325,10 @@ public: class IfcRationalBezierCurve : public IfcBezierCurve { public: std::vector /*[2:?]*/ WeightsData(); + virtual unsigned int getArgumentCount() const { return 6; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return VECTOR_DOUBLE; } return IfcBezierCurve::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "WeightsData"; } return IfcBezierCurve::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33832,6 +36350,10 @@ public: /// Whether the optional attribute SteelGrade is defined for this IfcReinforcingElement bool hasSteelGrade(); IfcLabel SteelGrade(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return STRING; } return IfcBuildingElementComponent::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "SteelGrade"; } return IfcBuildingElementComponent::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -33878,6 +36400,10 @@ public: IfcAreaMeasure TransverseBarCrossSectionArea(); IfcPositiveLengthMeasure LongitudinalBarSpacing(); IfcPositiveLengthMeasure TransverseBarSpacing(); + virtual unsigned int getArgumentCount() const { return 17; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; case 13: return DOUBLE; case 14: return DOUBLE; case 15: return DOUBLE; case 16: return DOUBLE; } return IfcReinforcingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "MeshLength"; case 10: return "MeshWidth"; case 11: return "LongitudinalBarNominalDiameter"; case 12: return "TransverseBarNominalDiameter"; case 13: return "LongitudinalBarCrossSectionArea"; case 14: return "TransverseBarCrossSectionArea"; case 15: return "LongitudinalBarSpacing"; case 16: return "TransverseBarSpacing"; } return IfcReinforcingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34034,6 +36560,10 @@ public: class IfcRoof : public IfcBuildingElement { public: IfcRoofTypeEnum::IfcRoofTypeEnum ShapeType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "ShapeType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34047,6 +36577,10 @@ public: /// Whether the optional attribute Radius is defined for this IfcRoundedEdgeFeature bool hasRadius(); IfcPositiveLengthMeasure Radius(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return DOUBLE; } return IfcEdgeFeature::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "Radius"; } return IfcEdgeFeature::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34107,6 +36641,10 @@ class IfcSensorType : public IfcDistributionControlElementType { public: /// Identifies the predefined types of sensor from which the type required may be set. IfcSensorTypeEnum::IfcSensorTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcDistributionControlElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcDistributionControlElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34384,6 +36922,10 @@ public: /// /// FC2x PLATFORM CHANGE: The attribute has been changed into an OPTIONAL attribute. IfcSlabTypeEnum::IfcSlabTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "PredefinedType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34560,6 +37102,10 @@ public: class IfcStair : public IfcBuildingElement { public: IfcStairTypeEnum::IfcStairTypeEnum ShapeType(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "ShapeType"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34761,6 +37307,10 @@ public: /// /// IFC2x4 CHANGE The attribute has been deprecated it shall only be exposed with a NIL value. Use Pset_StairFlightCommon.TreadLength instead. IfcPositiveLengthMeasure TreadLength(); + virtual unsigned int getArgumentCount() const { return 12; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return INT; case 9: return INT; case 10: return DOUBLE; case 11: return DOUBLE; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "NumberOfRiser"; case 9: return "NumberOfTreads"; case 10: return "RiserHeight"; case 11: return "TreadLength"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34817,6 +37367,10 @@ public: bool hasHasResults(); /// References to all result groups available for this structural analysis model. SHARED_PTR< IfcTemplatedEntityList > HasResults(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 5: return ENUMERATION; case 6: return ENTITY; case 7: return ENTITY_LIST; case 8: return ENTITY_LIST; } return IfcSystem::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 5: return "PredefinedType"; case 6: return "OrientationOf2DPlane"; case 7: return "LoadedBy"; case 8: return "HasResults"; } return IfcSystem::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34845,6 +37399,10 @@ public: /// Whether the optional attribute MinCurvatureRadius is defined for this IfcTendon bool hasMinCurvatureRadius(); IfcPositiveLengthMeasure MinCurvatureRadius(); + virtual unsigned int getArgumentCount() const { return 17; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return DOUBLE; case 13: return DOUBLE; case 14: return DOUBLE; case 15: return DOUBLE; case 16: return DOUBLE; } return IfcReinforcingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; case 10: return "NominalDiameter"; case 11: return "CrossSectionArea"; case 12: return "TensionForce"; case 13: return "PreStress"; case 14: return "FrictionCoefficient"; case 15: return "AnchorageSlip"; case 16: return "MinCurvatureRadius"; } return IfcReinforcingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34855,6 +37413,10 @@ public: }; class IfcTendonAnchor : public IfcReinforcingElement { public: + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcReinforcingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcReinforcingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -34889,6 +37451,10 @@ class IfcVibrationIsolatorType : public IfcDiscreteAccessoryType { public: /// Defines the type of vibration isolator. IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcDiscreteAccessoryType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcDiscreteAccessoryType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -35141,6 +37707,10 @@ public: /// IfcRelConnectsPathElements. class IfcWall : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -35353,6 +37923,10 @@ public: /// Figure 140 — Wall body clipping curved class IfcWallStandardCase : public IfcWall { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcWall::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcWall::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -35733,6 +38307,10 @@ public: /// /// 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. IfcPositiveLengthMeasure OverallWidth(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return DOUBLE; case 9: return DOUBLE; } return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "OverallHeight"; case 9: return "OverallWidth"; } return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -35776,6 +38354,10 @@ class IfcActuatorType : public IfcDistributionControlElementType { public: /// Identifies the predefined types of actuator from which the type required may be set. IfcActuatorTypeEnum::IfcActuatorTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcDistributionControlElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcDistributionControlElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -35814,6 +38396,10 @@ class IfcAlarmType : public IfcDistributionControlElementType { public: /// Identifies the predefined types of alarm from which the type required may be set. IfcAlarmTypeEnum::IfcAlarmTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcDistributionControlElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcDistributionControlElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -36061,6 +38647,10 @@ public: /// the IfcRepresentationMap. class IfcBeam : public IfcBuildingElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcBuildingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -36077,6 +38667,10 @@ public: /// Whether the optional attribute Height is defined for this IfcChamferEdgeFeature bool hasHeight(); IfcPositiveLengthMeasure Height(); + virtual unsigned int getArgumentCount() const { return 11; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return DOUBLE; case 10: return DOUBLE; } return IfcEdgeFeature::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "Width"; case 10: return "Height"; } return IfcEdgeFeature::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -36125,6 +38719,10 @@ class IfcControllerType : public IfcDistributionControlElementType { public: /// Identifies the predefined types of controller from which the type required may be set. IfcControllerTypeEnum::IfcControllerTypeEnum PredefinedType(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return ENUMERATION; } return IfcDistributionControlElementType::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "PredefinedType"; } return IfcDistributionControlElementType::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -36166,6 +38764,10 @@ public: /// 'Wall': The material from which the wall of the duct is constructed. class IfcDistributionChamberElement : public IfcDistributionFlowElement { public: + virtual unsigned int getArgumentCount() const { return 8; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {} return IfcDistributionFlowElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -36257,6 +38859,10 @@ public: /// Whether the optional attribute ControlElementId is defined for this IfcDistributionControlElement bool hasControlElementId(); IfcIdentifier ControlElementId(); + virtual unsigned int getArgumentCount() const { return 9; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return STRING; } return IfcDistributionElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "ControlElementId"; } return IfcDistributionElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } SHARED_PTR< IfcTemplatedEntityList > AssignedToFlowElement(); // INVERSE IfcRelFlowControlElements::RelatedControlElements bool is(Type::Enum v) const; Type::Enum type() const; @@ -36272,6 +38878,10 @@ public: /// Whether the optional attribute UserDefinedFunction is defined for this IfcElectricDistributionPoint bool hasUserDefinedFunction(); IfcLabel UserDefinedFunction(); + virtual unsigned int getArgumentCount() const { return 10; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 8: return ENUMERATION; case 9: return STRING; } return IfcFlowController::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 8: return "DistributionPointFunction"; case 9: return "UserDefinedFunction"; } return IfcFlowController::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); @@ -36319,6 +38929,10 @@ public: /// Whether the optional attribute BarSurface is defined for this IfcReinforcingBar bool hasBarSurface(); IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum BarSurface(); + virtual unsigned int getArgumentCount() const { return 14; } + virtual ArgumentType getArgumentType(unsigned int i) const { switch (i) {case 9: return DOUBLE; case 10: return DOUBLE; case 11: return DOUBLE; case 12: return ENUMERATION; case 13: return ENUMERATION; } return IfcReinforcingElement::getArgumentType(i); } + virtual const char* getArgumentName(unsigned int i) const { switch (i) {case 9: return "NominalDiameter"; case 10: return "CrossSectionArea"; case 11: return "BarLength"; case 12: return "BarRole"; case 13: return "BarSurface"; } return IfcReinforcingElement::getArgumentName(i); } + virtual ArgumentPtr getArgument(unsigned int i) const { return entity->getArgument(i); } bool is(Type::Enum v) const; Type::Enum type() const; static Type::Enum Class(); diff --git a/src/ifcparse/Ifc2x3enum.h b/src/ifcparse/Ifc2x3enum.h index 33209938f8..5cc441d301 100644 --- a/src/ifcparse/Ifc2x3enum.h +++ b/src/ifcparse/Ifc2x3enum.h @@ -19,7 +19,7 @@ /******************************************************************************** * * - * This file has been generated from IFC2X3_TC1.exp. Do not make modifications * + * This file has been generated from /tmp/IFC2X3_FINAL.exp. Do not make modifications * * but instead modify the python script that has been used to generate this. * * * ********************************************************************************/ diff --git a/src/ifcparse/IfcUtil.h b/src/ifcparse/IfcUtil.h index 4f82b6f870..03fb685ea2 100644 --- a/src/ifcparse/IfcUtil.h +++ b/src/ifcparse/IfcUtil.h @@ -33,6 +33,11 @@ typedef IfcAbstractEntity* IfcAbstractEntityPtr; class IfcEntityList; typedef SHARED_PTR IfcEntities; +class Argument; +//typedef SHARED_PTR ArgumentPtr; +typedef Argument* ArgumentPtr; + + template inline T* reinterpret_pointer_cast(F* from) { return (T*)from; @@ -40,6 +45,12 @@ inline T* reinterpret_pointer_cast(F* from) { //return std::tr1::static_pointer_cast(v); } +namespace IfcUtil { + enum ArgumentType { + INT, BOOL, DOUBLE, STRING, VECTOR_INT, VECTOR_DOUBLE, VECTOR_STRING, ENTITY, ENTITY_LIST, ENUMERATION, UNKNOWN + }; +} + namespace IfcUtil { class IfcBaseClass { @@ -49,6 +60,14 @@ public: virtual Ifc2x3::Type::Enum type() const = 0; }; +class IfcBaseEntity : public IfcBaseClass { +public: + virtual unsigned int getArgumentCount() const = 0; + virtual ArgumentType getArgumentType(unsigned int i) const = 0; + virtual ArgumentPtr getArgument(unsigned int i) const = 0; + virtual const char* getArgumentName(unsigned int i) const = 0; +}; + //typedef SHARED_PTR IfcSchemaEntity; typedef IfcBaseClass* IfcSchemaEntity; @@ -81,10 +100,6 @@ public: inline unsigned int Size() const { return (unsigned int) ls.size(); } }; -class Argument; -//typedef SHARED_PTR ArgumentPtr; -typedef Argument* ArgumentPtr; - namespace IfcUtil { class IfcAbstractSelect : public IfcBaseClass { public: