From 4987753a47708dc60ab8845495d3907723273698 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 23 Jul 2013 23:17:37 -0700 Subject: [PATCH] Allow setting enumeration values from python based on string --- src/ifcexpressparser/IfcExpressParser.py | 39 +- src/ifcparse/Ifc2x3-rt.cpp | 2016 ++++++++++++++++++++-- src/ifcparse/Ifc2x3-rt.h | 2 + src/ifcparse/IfcUntypedEntity.cpp | 3 +- src/ifcparse/IfcUtil.h | 57 +- 5 files changed, 1921 insertions(+), 196 deletions(-) diff --git a/src/ifcexpressparser/IfcExpressParser.py b/src/ifcexpressparser/IfcExpressParser.py index cdafc626a7..38ae43ac12 100644 --- a/src/ifcexpressparser/IfcExpressParser.py +++ b/src/ifcexpressparser/IfcExpressParser.py @@ -357,7 +357,7 @@ class Classdef: entity_map[self.class_name] = self def get_attributes(self, get_parent=True): s = entity_map[self.parent_class].get_attributes() if get_parent and self.parent_class else [] - s += [(a.name,not not a.optional,a.type.type_enum()) for a in self.arguments.l] + s += [(a.name,not not a.optional,a.type.type_enum(),a.type.type if a.is_enum() else None) for a in self.arguments.l] return s def get_constructor_args(self): s = entity_map[self.parent_class].get_constructor_args() if self.parent_class else [] @@ -580,6 +580,8 @@ namespace Type { IfcUtil::ArgumentType GetAttributeType(Enum t, unsigned char a); const std::string& GetAttributeName(Enum t, unsigned char a); bool GetAttributeOptional(Enum t, unsigned char a); + std::pair GetEnumerationIndex(Enum t, const std::string& a); + Enum GetAttributeEnumerationClass(Enum t, unsigned char a); }} #endif @@ -657,6 +659,7 @@ print >>cpp_file print >>cpp_file, "std::map string_map;" print >>cpp2_file, "std::map entity_descriptor_map;" +print >>cpp2_file, "std::map enumeration_descriptor_map;" maxlen = max([len(e) for e in all_enumerations]) string_map,attribute_count_map,attribute_index_map,attribute_name_map,attribute_optional_map,attribute_type_map = [""]*6 print >>cpp2_file, "void InitDescriptorMap() {" @@ -676,9 +679,19 @@ while True: parent_descriptor = ("entity_descriptor_map.find(Type::%s)->second"%e.parent_class) if e.parent_class else "0" print >>cpp2_file, " current = entity_descriptor_map[Type::%s] = new IfcEntityDescriptor(Type::%s,%s);"%(e.class_name,e.class_name,parent_descriptor) for a,i in zip(args,range(len(args))): - name,optional,type = a - print >>cpp2_file, " current->add(\"%s\",%s,%s);"%(name,"true" if optional else "false",type) - + name,optional,type,enum_class = a + if enum_class: + print >>cpp2_file, " current->add(\"%s\",%s,%s,Type::%s);"%(name,"true" if optional else "false",type,enum_class) + else: + print >>cpp2_file, " current->add(\"%s\",%s,%s);"%(name,"true" if optional else "false",type) +print >>cpp2_file, " // Enumerations" +print >>cpp2_file, " IfcEnumerationDescriptor* current_enum;" +print >>cpp2_file, " std::vector values;" +for e, name in [(e, name) for name, e in simple_types.items() if name in enumerations]: + print >>cpp2_file, " values.clear(); values.reserve(128);" + for value in e.type.v: + print >>cpp2_file, " values.push_back(\"%s\");"%value[0] + print >>cpp2_file, " current_enum = enumeration_descriptor_map[Type::%s] = new IfcEnumerationDescriptor(Type::%s, values);"%(name,name) print >>cpp2_file, "}" for e in all_enumerations: @@ -745,4 +758,22 @@ bool Type::GetAttributeOptional(Enum t, unsigned char a) { if ( i == entity_descriptor_map.end() ) throw IfcException("Type not found"); else return i->second->getArgumentOptional(a); } + +std::pair Type::GetEnumerationIndex(Enum t, const std::string& a) { + if (enumeration_descriptor_map.empty()) ::InitDescriptorMap(); + std::map::const_iterator i = enumeration_descriptor_map.find(t); + if ( i == enumeration_descriptor_map.end() ) throw IfcException("Value not found"); + else return i->second->getIndex(a); +} + +Type::Enum Type::GetAttributeEnumerationClass(Enum t, unsigned char a) { + if (entity_descriptor_map.empty()) ::InitDescriptorMap(); + std::map::const_iterator i = entity_descriptor_map.find(t); + if ( i == entity_descriptor_map.end() ) throw IfcException("Type not found"); + else { + Type::Enum t = i->second->getArgumentEnumerationClass(a); + if ( t == Type::ALL ) throw IfcException("Not an enumeration"); + else return t; + } +} """ \ No newline at end of file diff --git a/src/ifcparse/Ifc2x3-rt.cpp b/src/ifcparse/Ifc2x3-rt.cpp index 0e191eaaa1..e703a96765 100644 --- a/src/ifcparse/Ifc2x3-rt.cpp +++ b/src/ifcparse/Ifc2x3-rt.cpp @@ -35,6 +35,7 @@ using namespace Ifc2x3; using namespace IfcParse; using namespace IfcWrite; std::map entity_descriptor_map; +std::map enumeration_descriptor_map; void InitDescriptorMap() { IfcEntityDescriptor* current; current = entity_descriptor_map[Type::IfcSoundPowerMeasure] = new IfcEntityDescriptor(Type::IfcSoundPowerMeasure,0); @@ -272,11 +273,11 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcMoistureDiffusivityMeasure] = new IfcEntityDescriptor(Type::IfcMoistureDiffusivityMeasure,0); current->add("wrappedValue",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcActorRole] = new IfcEntityDescriptor(Type::IfcActorRole,0); - current->add("Role",false,Argument_ENUMERATION); + current->add("Role",false,Argument_ENUMERATION,Type::IfcRoleEnum); current->add("UserDefinedRole",true,Argument_STRING); current->add("Description",true,Argument_STRING); current = entity_descriptor_map[Type::IfcAddress] = new IfcEntityDescriptor(Type::IfcAddress,0); - current->add("Purpose",true,Argument_ENUMERATION); + current->add("Purpose",true,Argument_ENUMERATION,Type::IfcAddressTypeEnum); current->add("Description",true,Argument_STRING); current->add("UserDefinedPurpose",true,Argument_STRING); current = entity_descriptor_map[Type::IfcApplication] = new IfcEntityDescriptor(Type::IfcApplication,0); @@ -294,7 +295,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcAppliedValueRelationship] = new IfcEntityDescriptor(Type::IfcAppliedValueRelationship,0); current->add("ComponentOfTotal",false,Argument_ENTITY); current->add("Components",false,Argument_ENTITY_LIST); - current->add("ArithmeticOperator",false,Argument_ENUMERATION); + current->add("ArithmeticOperator",false,Argument_ENUMERATION,Type::IfcArithmeticOperatorEnum); current->add("Name",true,Argument_STRING); current->add("Description",true,Argument_STRING); current = entity_descriptor_map[Type::IfcApproval] = new IfcEntityDescriptor(Type::IfcApproval,0); @@ -375,7 +376,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcConstraint] = new IfcEntityDescriptor(Type::IfcConstraint,0); current->add("Name",false,Argument_STRING); current->add("Description",true,Argument_STRING); - current->add("ConstraintGrade",false,Argument_ENUMERATION); + current->add("ConstraintGrade",false,Argument_ENUMERATION,Type::IfcConstraintEnum); current->add("ConstraintSource",true,Argument_STRING); current->add("CreatingActor",true,Argument_ENTITY); current->add("CreationTime",true,Argument_ENTITY); @@ -385,7 +386,7 @@ void InitDescriptorMap() { current->add("Description",true,Argument_STRING); current->add("RelatingConstraint",false,Argument_ENTITY); current->add("RelatedConstraints",false,Argument_ENTITY_LIST); - current->add("LogicalAggregator",false,Argument_ENUMERATION); + current->add("LogicalAggregator",false,Argument_ENUMERATION,Type::IfcLogicalOperatorEnum); current = entity_descriptor_map[Type::IfcConstraintClassificationRelationship] = new IfcEntityDescriptor(Type::IfcConstraintClassificationRelationship,0); current->add("ClassifiedConstraint",false,Argument_ENTITY); current->add("RelatedClassifications",false,Argument_ENTITY_LIST); @@ -397,7 +398,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcCoordinatedUniversalTimeOffset] = new IfcEntityDescriptor(Type::IfcCoordinatedUniversalTimeOffset,0); current->add("HourOffset",false,Argument_INT); current->add("MinuteOffset",true,Argument_INT); - current->add("Sense",false,Argument_ENUMERATION); + current->add("Sense",false,Argument_ENUMERATION,Type::IfcAheadOrBehind); current = entity_descriptor_map[Type::IfcCostValue] = new IfcEntityDescriptor(Type::IfcCostValue,entity_descriptor_map.find(Type::IfcAppliedValue)->second); current->add("CostType",false,Argument_STRING); current->add("Condition",true,Argument_STRING); @@ -422,7 +423,7 @@ void InitDescriptorMap() { current->add("TimeComponent",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcDerivedUnit] = new IfcEntityDescriptor(Type::IfcDerivedUnit,0); current->add("Elements",false,Argument_ENTITY_LIST); - current->add("UnitType",false,Argument_ENUMERATION); + current->add("UnitType",false,Argument_ENUMERATION,Type::IfcDerivedUnitEnum); current->add("UserDefinedType",true,Argument_STRING); current = entity_descriptor_map[Type::IfcDerivedUnitElement] = new IfcEntityDescriptor(Type::IfcDerivedUnitElement,0); current->add("Unit",false,Argument_ENTITY); @@ -455,8 +456,8 @@ void InitDescriptorMap() { current->add("ElectronicFormat",true,Argument_ENTITY); current->add("ValidFrom",true,Argument_ENTITY); current->add("ValidUntil",true,Argument_ENTITY); - current->add("Confidentiality",true,Argument_ENUMERATION); - current->add("Status",true,Argument_ENUMERATION); + current->add("Confidentiality",true,Argument_ENUMERATION,Type::IfcDocumentConfidentialityEnum); + current->add("Status",true,Argument_ENUMERATION,Type::IfcDocumentStatusEnum); current = entity_descriptor_map[Type::IfcDocumentInformationRelationship] = new IfcEntityDescriptor(Type::IfcDocumentInformationRelationship,0); current->add("RelatingDocument",false,Argument_ENTITY); current->add("RelatedDocuments",false,Argument_ENTITY_LIST); @@ -468,7 +469,7 @@ void InitDescriptorMap() { current->add("RelatedDraughtingCallout",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcEnvironmentalImpactValue] = new IfcEntityDescriptor(Type::IfcEnvironmentalImpactValue,entity_descriptor_map.find(Type::IfcAppliedValue)->second); current->add("ImpactType",false,Argument_STRING); - current->add("Category",false,Argument_ENUMERATION); + current->add("Category",false,Argument_ENUMERATION,Type::IfcEnvironmentalImpactCategoryEnum); current->add("UserDefinedCategory",true,Argument_STRING); current = entity_descriptor_map[Type::IfcExternalReference] = new IfcEntityDescriptor(Type::IfcExternalReference,0); current->add("Location",true,Argument_STRING); @@ -497,7 +498,7 @@ void InitDescriptorMap() { current->add("SecondaryPlaneAngle",false,Argument_VECTOR_DOUBLE); current->add("LuminousIntensity",false,Argument_VECTOR_DOUBLE); current = entity_descriptor_map[Type::IfcLightIntensityDistribution] = new IfcEntityDescriptor(Type::IfcLightIntensityDistribution,0); - current->add("LightDistributionCurve",false,Argument_ENUMERATION); + current->add("LightDistributionCurve",false,Argument_ENUMERATION,Type::IfcLightDistributionCurveEnum); current->add("DistributionData",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcLocalTime] = new IfcEntityDescriptor(Type::IfcLocalTime,0); current->add("HourComponent",false,Argument_INT); @@ -519,8 +520,8 @@ void InitDescriptorMap() { current->add("LayerSetName",true,Argument_STRING); current = entity_descriptor_map[Type::IfcMaterialLayerSetUsage] = new IfcEntityDescriptor(Type::IfcMaterialLayerSetUsage,0); current->add("ForLayerSet",false,Argument_ENTITY); - current->add("LayerSetDirection",false,Argument_ENUMERATION); - current->add("DirectionSense",false,Argument_ENUMERATION); + current->add("LayerSetDirection",false,Argument_ENUMERATION,Type::IfcLayerSetDirectionEnum); + current->add("DirectionSense",false,Argument_ENUMERATION,Type::IfcDirectionSenseEnum); current->add("OffsetFromReferenceLine",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcMaterialList] = new IfcEntityDescriptor(Type::IfcMaterialList,0); current->add("Materials",false,Argument_ENTITY_LIST); @@ -544,19 +545,19 @@ void InitDescriptorMap() { current->add("PlasticStrain",true,Argument_DOUBLE); current->add("Relaxations",true,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcMetric] = new IfcEntityDescriptor(Type::IfcMetric,entity_descriptor_map.find(Type::IfcConstraint)->second); - current->add("Benchmark",false,Argument_ENUMERATION); + current->add("Benchmark",false,Argument_ENUMERATION,Type::IfcBenchmarkEnum); current->add("ValueSource",true,Argument_STRING); current->add("DataValue",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcMonetaryUnit] = new IfcEntityDescriptor(Type::IfcMonetaryUnit,0); - current->add("Currency",false,Argument_ENUMERATION); + current->add("Currency",false,Argument_ENUMERATION,Type::IfcCurrencyEnum); current = entity_descriptor_map[Type::IfcNamedUnit] = new IfcEntityDescriptor(Type::IfcNamedUnit,0); current->add("Dimensions",false,Argument_ENTITY); - current->add("UnitType",false,Argument_ENUMERATION); + current->add("UnitType",false,Argument_ENUMERATION,Type::IfcUnitEnum); current = entity_descriptor_map[Type::IfcObjectPlacement] = new IfcEntityDescriptor(Type::IfcObjectPlacement,0); current = entity_descriptor_map[Type::IfcObjective] = new IfcEntityDescriptor(Type::IfcObjective,entity_descriptor_map.find(Type::IfcConstraint)->second); current->add("BenchmarkValues",true,Argument_ENTITY); current->add("ResultValues",true,Argument_ENTITY); - current->add("ObjectiveQualifier",false,Argument_ENUMERATION); + current->add("ObjectiveQualifier",false,Argument_ENUMERATION,Type::IfcObjectiveEnum); current->add("UserDefinedQualifier",true,Argument_STRING); current = entity_descriptor_map[Type::IfcOpticalMaterialProperties] = new IfcEntityDescriptor(Type::IfcOpticalMaterialProperties,entity_descriptor_map.find(Type::IfcMaterialProperties)->second); current->add("VisibleTransmittance",true,Argument_DOUBLE); @@ -582,8 +583,8 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcOwnerHistory] = new IfcEntityDescriptor(Type::IfcOwnerHistory,0); current->add("OwningUser",false,Argument_ENTITY); current->add("OwningApplication",false,Argument_ENTITY); - current->add("State",true,Argument_ENUMERATION); - current->add("ChangeAction",false,Argument_ENUMERATION); + current->add("State",true,Argument_ENUMERATION,Type::IfcStateEnum); + current->add("ChangeAction",false,Argument_ENUMERATION,Type::IfcChangeActionEnum); current->add("LastModifiedDate",true,Argument_INT); current->add("LastModifyingUser",true,Argument_ENTITY); current->add("LastModifyingApplication",true,Argument_ENTITY); @@ -643,7 +644,7 @@ void InitDescriptorMap() { current->add("COContent",true,Argument_DOUBLE); current->add("CO2Content",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcProfileDef] = new IfcEntityDescriptor(Type::IfcProfileDef,0); - current->add("ProfileType",false,Argument_ENUMERATION); + current->add("ProfileType",false,Argument_ENUMERATION,Type::IfcProfileTypeEnum); current->add("ProfileName",true,Argument_STRING); current = entity_descriptor_map[Type::IfcProfileProperties] = new IfcEntityDescriptor(Type::IfcProfileProperties,0); current->add("ProfileName",true,Argument_STRING); @@ -686,7 +687,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcReinforcementBarProperties] = new IfcEntityDescriptor(Type::IfcReinforcementBarProperties,0); current->add("TotalCrossSectionArea",false,Argument_DOUBLE); current->add("SteelGrade",false,Argument_STRING); - current->add("BarSurface",true,Argument_ENUMERATION); + current->add("BarSurface",true,Argument_ENUMERATION,Type::IfcReinforcingBarSurfaceEnum); current->add("EffectiveDepth",true,Argument_DOUBLE); current->add("NominalBarDiameter",true,Argument_DOUBLE); current->add("BarCount",true,Argument_DOUBLE); @@ -710,24 +711,24 @@ void InitDescriptorMap() { current->add("RibHeight",true,Argument_DOUBLE); current->add("RibWidth",true,Argument_DOUBLE); current->add("RibSpacing",true,Argument_DOUBLE); - current->add("Direction",false,Argument_ENUMERATION); + current->add("Direction",false,Argument_ENUMERATION,Type::IfcRibPlateDirectionEnum); current = entity_descriptor_map[Type::IfcRoot] = new IfcEntityDescriptor(Type::IfcRoot,0); current->add("GlobalId",false,Argument_STRING); current->add("OwnerHistory",false,Argument_ENTITY); current->add("Name",true,Argument_STRING); current->add("Description",true,Argument_STRING); current = entity_descriptor_map[Type::IfcSIUnit] = new IfcEntityDescriptor(Type::IfcSIUnit,entity_descriptor_map.find(Type::IfcNamedUnit)->second); - current->add("Prefix",true,Argument_ENUMERATION); - current->add("Name",false,Argument_ENUMERATION); + current->add("Prefix",true,Argument_ENUMERATION,Type::IfcSIPrefix); + current->add("Name",false,Argument_ENUMERATION,Type::IfcSIUnitName); current = entity_descriptor_map[Type::IfcSectionProperties] = new IfcEntityDescriptor(Type::IfcSectionProperties,0); - current->add("SectionType",false,Argument_ENUMERATION); + current->add("SectionType",false,Argument_ENUMERATION,Type::IfcSectionTypeEnum); current->add("StartProfile",false,Argument_ENTITY); current->add("EndProfile",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcSectionReinforcementProperties] = new IfcEntityDescriptor(Type::IfcSectionReinforcementProperties,0); current->add("LongitudinalStartPosition",false,Argument_DOUBLE); current->add("LongitudinalEndPosition",false,Argument_DOUBLE); current->add("TransversePosition",true,Argument_DOUBLE); - current->add("ReinforcementRole",false,Argument_ENUMERATION); + current->add("ReinforcementRole",false,Argument_ENUMERATION,Type::IfcReinforcingBarRoleEnum); current->add("SectionDefinition",false,Argument_ENTITY); current->add("CrossSectionReinforcementDefinitions",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcShapeAspect] = new IfcEntityDescriptor(Type::IfcShapeAspect,0); @@ -755,7 +756,7 @@ void InitDescriptorMap() { current->add("Name",true,Argument_STRING); current = entity_descriptor_map[Type::IfcStyledRepresentation] = new IfcEntityDescriptor(Type::IfcStyledRepresentation,entity_descriptor_map.find(Type::IfcStyleModel)->second); current = entity_descriptor_map[Type::IfcSurfaceStyle] = new IfcEntityDescriptor(Type::IfcSurfaceStyle,entity_descriptor_map.find(Type::IfcPresentationStyle)->second); - current->add("Side",false,Argument_ENUMERATION); + current->add("Side",false,Argument_ENUMERATION,Type::IfcSurfaceSide); current->add("Styles",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcSurfaceStyleLighting] = new IfcEntityDescriptor(Type::IfcSurfaceStyleLighting,0); current->add("DiffuseTransmissionColour",false,Argument_ENTITY); @@ -772,7 +773,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcSurfaceTexture] = new IfcEntityDescriptor(Type::IfcSurfaceTexture,0); current->add("RepeatS",false,Argument_BOOL); current->add("RepeatT",false,Argument_BOOL); - current->add("TextureType",false,Argument_ENUMERATION); + current->add("TextureType",false,Argument_ENUMERATION,Type::IfcSurfaceTextureEnum); current->add("TextureTransform",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcSymbolStyle] = new IfcEntityDescriptor(Type::IfcSymbolStyle,entity_descriptor_map.find(Type::IfcPresentationStyle)->second); current->add("StyleOfSymbol",false,Argument_ENTITY); @@ -833,8 +834,8 @@ void InitDescriptorMap() { current->add("Description",true,Argument_STRING); current->add("StartTime",false,Argument_ENTITY); current->add("EndTime",false,Argument_ENTITY); - current->add("TimeSeriesDataType",false,Argument_ENUMERATION); - current->add("DataOrigin",false,Argument_ENUMERATION); + current->add("TimeSeriesDataType",false,Argument_ENUMERATION,Type::IfcTimeSeriesDataTypeEnum); + current->add("DataOrigin",false,Argument_ENUMERATION,Type::IfcDataOriginEnum); current->add("UserDefinedDataOrigin",true,Argument_STRING); current->add("Unit",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcTimeSeriesReferenceRelationship] = new IfcEntityDescriptor(Type::IfcTimeSeriesReferenceRelationship,0); @@ -968,7 +969,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcGeometricRepresentationSubContext] = new IfcEntityDescriptor(Type::IfcGeometricRepresentationSubContext,entity_descriptor_map.find(Type::IfcGeometricRepresentationContext)->second); current->add("ParentContext",false,Argument_ENTITY); current->add("TargetScale",true,Argument_DOUBLE); - current->add("TargetView",false,Argument_ENUMERATION); + current->add("TargetView",false,Argument_ENUMERATION,Type::IfcGeometricProjectionEnum); current->add("UserDefinedTargetView",true,Argument_STRING); current = entity_descriptor_map[Type::IfcGeometricSet] = new IfcEntityDescriptor(Type::IfcGeometricSet,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); current->add("Elements",false,Argument_ENTITY_LIST); @@ -1001,7 +1002,7 @@ void InitDescriptorMap() { current->add("ColourAppearance",true,Argument_ENTITY); current->add("ColourTemperature",false,Argument_DOUBLE); current->add("LuminousFlux",false,Argument_DOUBLE); - current->add("LightEmissionSource",false,Argument_ENUMERATION); + current->add("LightEmissionSource",false,Argument_ENUMERATION,Type::IfcLightEmissionSourceEnum); current->add("LightDistributionDataSource",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcLightSourcePositional] = new IfcEntityDescriptor(Type::IfcLightSourcePositional,entity_descriptor_map.find(Type::IfcLightSource)->second); current->add("Position",false,Argument_ENTITY); @@ -1115,7 +1116,7 @@ void InitDescriptorMap() { current->add("CrossSections",false,Argument_ENTITY_LIST); current->add("CrossSectionPositions",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcServiceLifeFactor] = new IfcEntityDescriptor(Type::IfcServiceLifeFactor,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcServiceLifeFactorTypeEnum); current->add("UpperValue",true,Argument_ENTITY); current->add("MostUsedValue",false,Argument_ENTITY); current->add("LowerValue",true,Argument_ENTITY); @@ -1128,7 +1129,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcSolidModel] = new IfcEntityDescriptor(Type::IfcSolidModel,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); current = entity_descriptor_map[Type::IfcSoundProperties] = new IfcEntityDescriptor(Type::IfcSoundProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); current->add("IsAttenuating",false,Argument_BOOL); - current->add("SoundScale",true,Argument_ENUMERATION); + current->add("SoundScale",true,Argument_ENUMERATION,Type::IfcSoundScaleEnum); current->add("SoundValues",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcSoundValue] = new IfcEntityDescriptor(Type::IfcSoundValue,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); current->add("SoundLevelTimeSeries",true,Argument_ENTITY); @@ -1136,15 +1137,15 @@ void InitDescriptorMap() { current->add("SoundLevelSingleValue",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcSpaceThermalLoadProperties] = new IfcEntityDescriptor(Type::IfcSpaceThermalLoadProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); current->add("ApplicableValueRatio",true,Argument_DOUBLE); - current->add("ThermalLoadSource",false,Argument_ENUMERATION); - current->add("PropertySource",false,Argument_ENUMERATION); + current->add("ThermalLoadSource",false,Argument_ENUMERATION,Type::IfcThermalLoadSourceEnum); + current->add("PropertySource",false,Argument_ENUMERATION,Type::IfcPropertySourceEnum); current->add("SourceDescription",true,Argument_STRING); current->add("MaximumValue",false,Argument_DOUBLE); current->add("MinimumValue",true,Argument_DOUBLE); current->add("ThermalLoadTimeSeriesValues",true,Argument_ENTITY); current->add("UserDefinedThermalLoadSource",true,Argument_STRING); current->add("UserDefinedPropertySource",true,Argument_STRING); - current->add("ThermalLoadType",false,Argument_ENUMERATION); + current->add("ThermalLoadType",false,Argument_ENUMERATION,Type::IfcThermalLoadTypeEnum); current = entity_descriptor_map[Type::IfcStructuralLoadLinearForce] = new IfcEntityDescriptor(Type::IfcStructuralLoadLinearForce,entity_descriptor_map.find(Type::IfcStructuralLoadStatic)->second); current->add("LinearForceX",true,Argument_DOUBLE); current->add("LinearForceY",true,Argument_DOUBLE); @@ -1207,7 +1208,7 @@ void InitDescriptorMap() { current->add("ReflectionColour",true,Argument_ENTITY); current->add("SpecularColour",true,Argument_ENTITY); current->add("SpecularHighlight",true,Argument_ENTITY); - current->add("ReflectanceMethod",false,Argument_ENUMERATION); + current->add("ReflectanceMethod",false,Argument_ENUMERATION,Type::IfcReflectanceMethodEnum); current = entity_descriptor_map[Type::IfcSweptAreaSolid] = new IfcEntityDescriptor(Type::IfcSweptAreaSolid,entity_descriptor_map.find(Type::IfcSolidModel)->second); current->add("SweptArea",false,Argument_ENTITY); current->add("Position",false,Argument_ENTITY); @@ -1236,7 +1237,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcTextLiteral] = new IfcEntityDescriptor(Type::IfcTextLiteral,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); current->add("Literal",false,Argument_STRING); current->add("Placement",false,Argument_ENTITY); - current->add("Path",false,Argument_ENUMERATION); + current->add("Path",false,Argument_ENUMERATION,Type::IfcTextPath); current = entity_descriptor_map[Type::IfcTextLiteralWithExtent] = new IfcEntityDescriptor(Type::IfcTextLiteralWithExtent,entity_descriptor_map.find(Type::IfcTextLiteral)->second); current->add("Extent",false,Argument_ENTITY); current->add("BoxAlignment",false,Argument_STRING); @@ -1278,14 +1279,14 @@ void InitDescriptorMap() { current->add("SecondMullionOffset",true,Argument_DOUBLE); current->add("ShapeAspectStyle",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcWindowPanelProperties] = new IfcEntityDescriptor(Type::IfcWindowPanelProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); - current->add("OperationType",false,Argument_ENUMERATION); - current->add("PanelPosition",false,Argument_ENUMERATION); + current->add("OperationType",false,Argument_ENUMERATION,Type::IfcWindowPanelOperationEnum); + current->add("PanelPosition",false,Argument_ENUMERATION,Type::IfcWindowPanelPositionEnum); current->add("FrameDepth",true,Argument_DOUBLE); current->add("FrameThickness",true,Argument_DOUBLE); current->add("ShapeAspectStyle",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcWindowStyle] = new IfcEntityDescriptor(Type::IfcWindowStyle,entity_descriptor_map.find(Type::IfcTypeProduct)->second); - current->add("ConstructionType",false,Argument_ENUMERATION); - current->add("OperationType",false,Argument_ENUMERATION); + current->add("ConstructionType",false,Argument_ENUMERATION,Type::IfcWindowStyleConstructionEnum); + current->add("OperationType",false,Argument_ENUMERATION,Type::IfcWindowStyleOperationEnum); current->add("ParameterTakesPrecedence",false,Argument_BOOL); current->add("Sizeable",false,Argument_BOOL); current = entity_descriptor_map[Type::IfcZShapeProfileDef] = new IfcEntityDescriptor(Type::IfcZShapeProfileDef,entity_descriptor_map.find(Type::IfcParameterizedProfileDef)->second); @@ -1301,7 +1302,7 @@ void InitDescriptorMap() { current->add("InnerBoundaries",true,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcAnnotationFillAreaOccurrence] = new IfcEntityDescriptor(Type::IfcAnnotationFillAreaOccurrence,entity_descriptor_map.find(Type::IfcAnnotationOccurrence)->second); current->add("FillStyleTarget",true,Argument_ENTITY); - current->add("GlobalOrLocal",true,Argument_ENUMERATION); + current->add("GlobalOrLocal",true,Argument_ENUMERATION,Type::IfcGlobalOrLocalEnum); current = entity_descriptor_map[Type::IfcAnnotationSurface] = new IfcEntityDescriptor(Type::IfcAnnotationSurface,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); current->add("Item",false,Argument_ENTITY); current->add("TextureCoordinates",true,Argument_ENTITY); @@ -1313,7 +1314,7 @@ void InitDescriptorMap() { current->add("Axis",true,Argument_ENTITY); current->add("RefDirection",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcBooleanResult] = new IfcEntityDescriptor(Type::IfcBooleanResult,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); - current->add("Operator",false,Argument_ENUMERATION); + current->add("Operator",false,Argument_ENUMERATION,Type::IfcBooleanOperator); current->add("FirstOperand",false,Argument_ENTITY); current->add("SecondOperand",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcBoundedSurface] = new IfcEntityDescriptor(Type::IfcBoundedSurface,entity_descriptor_map.find(Type::IfcSurface)->second); @@ -1350,7 +1351,7 @@ void InitDescriptorMap() { current->add("Radius",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcClosedShell] = new IfcEntityDescriptor(Type::IfcClosedShell,entity_descriptor_map.find(Type::IfcConnectedFaceSet)->second); current = entity_descriptor_map[Type::IfcCompositeCurveSegment] = new IfcEntityDescriptor(Type::IfcCompositeCurveSegment,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); - current->add("Transition",false,Argument_ENUMERATION); + current->add("Transition",false,Argument_ENUMERATION,Type::IfcTransitionCode); current->add("SameSense",false,Argument_BOOL); current->add("ParentCurve",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcCraneRailAShapeProfileDef] = new IfcEntityDescriptor(Type::IfcCraneRailAShapeProfileDef,entity_descriptor_map.find(Type::IfcParameterizedProfileDef)->second); @@ -1390,7 +1391,7 @@ void InitDescriptorMap() { current->add("Target",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcDimensionCurve] = new IfcEntityDescriptor(Type::IfcDimensionCurve,entity_descriptor_map.find(Type::IfcAnnotationCurveOccurrence)->second); current = entity_descriptor_map[Type::IfcDimensionCurveTerminator] = new IfcEntityDescriptor(Type::IfcDimensionCurveTerminator,entity_descriptor_map.find(Type::IfcTerminatorSymbol)->second); - current->add("Role",false,Argument_ENUMERATION); + current->add("Role",false,Argument_ENUMERATION,Type::IfcDimensionExtentUsage); current = entity_descriptor_map[Type::IfcDirection] = new IfcEntityDescriptor(Type::IfcDirection,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); current->add("DirectionRatios",false,Argument_VECTOR_DOUBLE); current = entity_descriptor_map[Type::IfcDoorLiningProperties] = new IfcEntityDescriptor(Type::IfcDoorLiningProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); @@ -1407,13 +1408,13 @@ void InitDescriptorMap() { current->add("ShapeAspectStyle",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcDoorPanelProperties] = new IfcEntityDescriptor(Type::IfcDoorPanelProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); current->add("PanelDepth",true,Argument_DOUBLE); - current->add("PanelOperation",false,Argument_ENUMERATION); + current->add("PanelOperation",false,Argument_ENUMERATION,Type::IfcDoorPanelOperationEnum); current->add("PanelWidth",true,Argument_DOUBLE); - current->add("PanelPosition",false,Argument_ENUMERATION); + current->add("PanelPosition",false,Argument_ENUMERATION,Type::IfcDoorPanelPositionEnum); current->add("ShapeAspectStyle",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcDoorStyle] = new IfcEntityDescriptor(Type::IfcDoorStyle,entity_descriptor_map.find(Type::IfcTypeProduct)->second); - current->add("OperationType",false,Argument_ENUMERATION); - current->add("ConstructionType",false,Argument_ENUMERATION); + current->add("OperationType",false,Argument_ENUMERATION,Type::IfcDoorStyleOperationEnum); + current->add("ConstructionType",false,Argument_ENUMERATION,Type::IfcDoorStyleConstructionEnum); current->add("ParameterTakesPrecedence",false,Argument_BOOL); current->add("Sizeable",false,Argument_BOOL); current = entity_descriptor_map[Type::IfcDraughtingCallout] = new IfcEntityDescriptor(Type::IfcDraughtingCallout,entity_descriptor_map.find(Type::IfcGeometricRepresentationItem)->second); @@ -1433,7 +1434,7 @@ void InitDescriptorMap() { current->add("SemiAxis1",false,Argument_DOUBLE); current->add("SemiAxis2",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcEnergyProperties] = new IfcEntityDescriptor(Type::IfcEnergyProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); - current->add("EnergySequence",true,Argument_ENUMERATION); + current->add("EnergySequence",true,Argument_ENUMERATION,Type::IfcEnergySequenceEnum); current->add("UserDefinedEnergySequence",true,Argument_STRING); current = entity_descriptor_map[Type::IfcExtrudedAreaSolid] = new IfcEntityDescriptor(Type::IfcExtrudedAreaSolid,entity_descriptor_map.find(Type::IfcSweptAreaSolid)->second); current->add("ExtrudedDirection",false,Argument_ENTITY); @@ -1453,7 +1454,7 @@ void InitDescriptorMap() { current->add("Tiles",false,Argument_ENTITY_LIST); current->add("TilingScale",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcFluidFlowProperties] = new IfcEntityDescriptor(Type::IfcFluidFlowProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); - current->add("PropertySource",false,Argument_ENUMERATION); + current->add("PropertySource",false,Argument_ENUMERATION,Type::IfcPropertySourceEnum); current->add("FlowConditionTimeSeries",true,Argument_ENTITY); current->add("VelocityTimeSeries",true,Argument_ENTITY); current->add("FlowrateTimeSeries",true,Argument_ENTITY); @@ -1470,7 +1471,7 @@ void InitDescriptorMap() { current->add("PressureSingleValue",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcFurnishingElementType] = new IfcEntityDescriptor(Type::IfcFurnishingElementType,entity_descriptor_map.find(Type::IfcElementType)->second); current = entity_descriptor_map[Type::IfcFurnitureType] = new IfcEntityDescriptor(Type::IfcFurnitureType,entity_descriptor_map.find(Type::IfcFurnishingElementType)->second); - current->add("AssemblyPlace",false,Argument_ENUMERATION); + current->add("AssemblyPlace",false,Argument_ENUMERATION,Type::IfcAssemblyPlaceEnum); current = entity_descriptor_map[Type::IfcGeometricCurveSet] = new IfcEntityDescriptor(Type::IfcGeometricCurveSet,entity_descriptor_map.find(Type::IfcGeometricSet)->second); current = entity_descriptor_map[Type::IfcIShapeProfileDef] = new IfcEntityDescriptor(Type::IfcIShapeProfileDef,entity_descriptor_map.find(Type::IfcParameterizedProfileDef)->second); current->add("OverallWidth",false,Argument_DOUBLE); @@ -1504,8 +1505,8 @@ void InitDescriptorMap() { current->add("SelfIntersect",false,Argument_BOOL); current->add("RefDirection",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcPermeableCoveringProperties] = new IfcEntityDescriptor(Type::IfcPermeableCoveringProperties,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); - current->add("OperationType",false,Argument_ENUMERATION); - current->add("PanelPosition",false,Argument_ENUMERATION); + current->add("OperationType",false,Argument_ENUMERATION,Type::IfcPermeableCoveringOperationEnum); + current->add("PanelPosition",false,Argument_ENUMERATION,Type::IfcWindowPanelPositionEnum); current->add("FrameDepth",true,Argument_DOUBLE); current->add("FrameThickness",true,Argument_DOUBLE); current->add("ShapeAspectStyle",true,Argument_ENTITY); @@ -1525,7 +1526,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcPropertySet] = new IfcEntityDescriptor(Type::IfcPropertySet,entity_descriptor_map.find(Type::IfcPropertySetDefinition)->second); current->add("HasProperties",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcProxy] = new IfcEntityDescriptor(Type::IfcProxy,entity_descriptor_map.find(Type::IfcProduct)->second); - current->add("ProxyType",false,Argument_ENUMERATION); + current->add("ProxyType",false,Argument_ENUMERATION,Type::IfcObjectTypeEnum); current->add("Tag",true,Argument_STRING); current = entity_descriptor_map[Type::IfcRectangleHollowProfileDef] = new IfcEntityDescriptor(Type::IfcRectangleHollowProfileDef,entity_descriptor_map.find(Type::IfcRectangleProfileDef)->second); current->add("WallThickness",false,Argument_DOUBLE); @@ -1545,7 +1546,7 @@ void InitDescriptorMap() { current->add("Vsense",false,Argument_BOOL); current = entity_descriptor_map[Type::IfcRelAssigns] = new IfcEntityDescriptor(Type::IfcRelAssigns,entity_descriptor_map.find(Type::IfcRelationship)->second); current->add("RelatedObjects",false,Argument_ENTITY_LIST); - current->add("RelatedObjectsType",true,Argument_ENUMERATION); + current->add("RelatedObjectsType",true,Argument_ENUMERATION,Type::IfcObjectTypeEnum); current = entity_descriptor_map[Type::IfcRelAssignsToActor] = new IfcEntityDescriptor(Type::IfcRelAssignsToActor,entity_descriptor_map.find(Type::IfcRelAssigns)->second); current->add("RelatingActor",false,Argument_ENTITY); current->add("ActingRole",true,Argument_ENTITY); @@ -1590,8 +1591,8 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcRelConnectsPathElements] = new IfcEntityDescriptor(Type::IfcRelConnectsPathElements,entity_descriptor_map.find(Type::IfcRelConnectsElements)->second); current->add("RelatingPriorities",false,Argument_VECTOR_INT); current->add("RelatedPriorities",false,Argument_VECTOR_INT); - current->add("RelatedConnectionType",false,Argument_ENUMERATION); - current->add("RelatingConnectionType",false,Argument_ENUMERATION); + current->add("RelatedConnectionType",false,Argument_ENUMERATION,Type::IfcConnectionTypeEnum); + current->add("RelatingConnectionType",false,Argument_ENUMERATION,Type::IfcConnectionTypeEnum); current = entity_descriptor_map[Type::IfcRelConnectsPortToElement] = new IfcEntityDescriptor(Type::IfcRelConnectsPortToElement,entity_descriptor_map.find(Type::IfcRelConnects)->second); current->add("RelatingPort",false,Argument_ENTITY); current->add("RelatedElement",false,Argument_ENTITY); @@ -1662,7 +1663,7 @@ void InitDescriptorMap() { current->add("RelatingProcess",false,Argument_ENTITY); current->add("RelatedProcess",false,Argument_ENTITY); current->add("TimeLag",false,Argument_DOUBLE); - current->add("SequenceType",false,Argument_ENUMERATION); + current->add("SequenceType",false,Argument_ENUMERATION,Type::IfcSequenceEnum); current = entity_descriptor_map[Type::IfcRelServicesBuildings] = new IfcEntityDescriptor(Type::IfcRelServicesBuildings,entity_descriptor_map.find(Type::IfcRelConnects)->second); current->add("RelatingSystem",false,Argument_ENTITY); current->add("RelatedBuildings",false,Argument_ENTITY_LIST); @@ -1670,8 +1671,8 @@ void InitDescriptorMap() { current->add("RelatingSpace",false,Argument_ENTITY); current->add("RelatedBuildingElement",true,Argument_ENTITY); current->add("ConnectionGeometry",true,Argument_ENTITY); - current->add("PhysicalOrVirtualBoundary",false,Argument_ENUMERATION); - current->add("InternalOrExternalBoundary",false,Argument_ENUMERATION); + current->add("PhysicalOrVirtualBoundary",false,Argument_ENUMERATION,Type::IfcPhysicalOrVirtualEnum); + current->add("InternalOrExternalBoundary",false,Argument_ENUMERATION,Type::IfcInternalOrExternalEnum); current = entity_descriptor_map[Type::IfcRelVoidsElement] = new IfcEntityDescriptor(Type::IfcRelVoidsElement,entity_descriptor_map.find(Type::IfcRelConnects)->second); current->add("RelatingBuildingElement",false,Argument_ENTITY); current->add("RelatedOpeningElement",false,Argument_ENTITY); @@ -1687,18 +1688,18 @@ void InitDescriptorMap() { current->add("Radius",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcSpatialStructureElement] = new IfcEntityDescriptor(Type::IfcSpatialStructureElement,entity_descriptor_map.find(Type::IfcProduct)->second); current->add("LongName",true,Argument_STRING); - current->add("CompositionType",false,Argument_ENUMERATION); + current->add("CompositionType",false,Argument_ENUMERATION,Type::IfcElementCompositionEnum); current = entity_descriptor_map[Type::IfcSpatialStructureElementType] = new IfcEntityDescriptor(Type::IfcSpatialStructureElementType,entity_descriptor_map.find(Type::IfcElementType)->second); current = entity_descriptor_map[Type::IfcSphere] = new IfcEntityDescriptor(Type::IfcSphere,entity_descriptor_map.find(Type::IfcCsgPrimitive3D)->second); current->add("Radius",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcStructuralActivity] = new IfcEntityDescriptor(Type::IfcStructuralActivity,entity_descriptor_map.find(Type::IfcProduct)->second); current->add("AppliedLoad",false,Argument_ENTITY); - current->add("GlobalOrLocal",false,Argument_ENUMERATION); + current->add("GlobalOrLocal",false,Argument_ENUMERATION,Type::IfcGlobalOrLocalEnum); current = entity_descriptor_map[Type::IfcStructuralItem] = new IfcEntityDescriptor(Type::IfcStructuralItem,entity_descriptor_map.find(Type::IfcProduct)->second); current = entity_descriptor_map[Type::IfcStructuralMember] = new IfcEntityDescriptor(Type::IfcStructuralMember,entity_descriptor_map.find(Type::IfcStructuralItem)->second); current = entity_descriptor_map[Type::IfcStructuralReaction] = new IfcEntityDescriptor(Type::IfcStructuralReaction,entity_descriptor_map.find(Type::IfcStructuralActivity)->second); current = entity_descriptor_map[Type::IfcStructuralSurfaceMember] = new IfcEntityDescriptor(Type::IfcStructuralSurfaceMember,entity_descriptor_map.find(Type::IfcStructuralMember)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcStructuralSurfaceTypeEnum); current->add("Thickness",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcStructuralSurfaceMemberVarying] = new IfcEntityDescriptor(Type::IfcStructuralSurfaceMemberVarying,entity_descriptor_map.find(Type::IfcStructuralSurfaceMember)->second); current->add("SubsequentThickness",false,Argument_VECTOR_DOUBLE); @@ -1722,7 +1723,7 @@ void InitDescriptorMap() { current->add("IsMilestone",false,Argument_BOOL); current->add("Priority",true,Argument_INT); current = entity_descriptor_map[Type::IfcTransportElementType] = new IfcEntityDescriptor(Type::IfcTransportElementType,entity_descriptor_map.find(Type::IfcElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcTransportElementTypeEnum); current = entity_descriptor_map[Type::IfcActor] = new IfcEntityDescriptor(Type::IfcActor,entity_descriptor_map.find(Type::IfcObject)->second); current->add("TheActor",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcAnnotation] = new IfcEntityDescriptor(Type::IfcAnnotation,entity_descriptor_map.find(Type::IfcProduct)->second); @@ -1747,7 +1748,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcCircleHollowProfileDef] = new IfcEntityDescriptor(Type::IfcCircleHollowProfileDef,entity_descriptor_map.find(Type::IfcCircleProfileDef)->second); current->add("WallThickness",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcColumnType] = new IfcEntityDescriptor(Type::IfcColumnType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcColumnTypeEnum); current = entity_descriptor_map[Type::IfcCompositeCurve] = new IfcEntityDescriptor(Type::IfcCompositeCurve,entity_descriptor_map.find(Type::IfcBoundedCurve)->second); current->add("Segments",false,Argument_ENTITY_LIST); current->add("SelfIntersect",false,Argument_BOOL); @@ -1756,7 +1757,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcConstructionResource] = new IfcEntityDescriptor(Type::IfcConstructionResource,entity_descriptor_map.find(Type::IfcResource)->second); current->add("ResourceIdentifier",true,Argument_STRING); current->add("ResourceGroup",true,Argument_STRING); - current->add("ResourceConsumption",true,Argument_ENUMERATION); + current->add("ResourceConsumption",true,Argument_ENUMERATION,Type::IfcResourceConsumptionEnum); current->add("BaseQuantity",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcControl] = new IfcEntityDescriptor(Type::IfcControl,entity_descriptor_map.find(Type::IfcObject)->second); current = entity_descriptor_map[Type::IfcCostItem] = new IfcEntityDescriptor(Type::IfcCostItem,entity_descriptor_map.find(Type::IfcControl)->second); @@ -1768,17 +1769,17 @@ void InitDescriptorMap() { current->add("TargetUsers",true,Argument_ENTITY_LIST); current->add("UpdateDate",true,Argument_ENTITY); current->add("ID",false,Argument_STRING); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCostScheduleTypeEnum); current = entity_descriptor_map[Type::IfcCoveringType] = new IfcEntityDescriptor(Type::IfcCoveringType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCoveringTypeEnum); current = entity_descriptor_map[Type::IfcCrewResource] = new IfcEntityDescriptor(Type::IfcCrewResource,entity_descriptor_map.find(Type::IfcConstructionResource)->second); current = entity_descriptor_map[Type::IfcCurtainWallType] = new IfcEntityDescriptor(Type::IfcCurtainWallType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCurtainWallTypeEnum); current = entity_descriptor_map[Type::IfcDimensionCurveDirectedCallout] = new IfcEntityDescriptor(Type::IfcDimensionCurveDirectedCallout,entity_descriptor_map.find(Type::IfcDraughtingCallout)->second); current = entity_descriptor_map[Type::IfcDistributionElementType] = new IfcEntityDescriptor(Type::IfcDistributionElementType,entity_descriptor_map.find(Type::IfcElementType)->second); current = entity_descriptor_map[Type::IfcDistributionFlowElementType] = new IfcEntityDescriptor(Type::IfcDistributionFlowElementType,entity_descriptor_map.find(Type::IfcDistributionElementType)->second); current = entity_descriptor_map[Type::IfcElectricalBaseProperties] = new IfcEntityDescriptor(Type::IfcElectricalBaseProperties,entity_descriptor_map.find(Type::IfcEnergyProperties)->second); - current->add("ElectricCurrentType",true,Argument_ENUMERATION); + current->add("ElectricCurrentType",true,Argument_ENUMERATION,Type::IfcElectricCurrentEnum); current->add("InputVoltage",false,Argument_DOUBLE); current->add("InputFrequency",false,Argument_DOUBLE); current->add("FullLoadCurrent",true,Argument_DOUBLE); @@ -1789,8 +1790,8 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcElement] = new IfcEntityDescriptor(Type::IfcElement,entity_descriptor_map.find(Type::IfcProduct)->second); current->add("Tag",true,Argument_STRING); current = entity_descriptor_map[Type::IfcElementAssembly] = new IfcEntityDescriptor(Type::IfcElementAssembly,entity_descriptor_map.find(Type::IfcElement)->second); - current->add("AssemblyPlace",true,Argument_ENUMERATION); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("AssemblyPlace",true,Argument_ENUMERATION,Type::IfcAssemblyPlaceEnum); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcElementAssemblyTypeEnum); current = entity_descriptor_map[Type::IfcElementComponent] = new IfcEntityDescriptor(Type::IfcElementComponent,entity_descriptor_map.find(Type::IfcElement)->second); current = entity_descriptor_map[Type::IfcElementComponentType] = new IfcEntityDescriptor(Type::IfcElementComponentType,entity_descriptor_map.find(Type::IfcElementType)->second); current = entity_descriptor_map[Type::IfcEllipse] = new IfcEntityDescriptor(Type::IfcEllipse,entity_descriptor_map.find(Type::IfcConic)->second); @@ -1800,9 +1801,9 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcEquipmentElement] = new IfcEntityDescriptor(Type::IfcEquipmentElement,entity_descriptor_map.find(Type::IfcElement)->second); current = entity_descriptor_map[Type::IfcEquipmentStandard] = new IfcEntityDescriptor(Type::IfcEquipmentStandard,entity_descriptor_map.find(Type::IfcControl)->second); current = entity_descriptor_map[Type::IfcEvaporativeCoolerType] = new IfcEntityDescriptor(Type::IfcEvaporativeCoolerType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcEvaporativeCoolerTypeEnum); current = entity_descriptor_map[Type::IfcEvaporatorType] = new IfcEntityDescriptor(Type::IfcEvaporatorType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcEvaporatorTypeEnum); current = entity_descriptor_map[Type::IfcFacetedBrep] = new IfcEntityDescriptor(Type::IfcFacetedBrep,entity_descriptor_map.find(Type::IfcManifoldSolidBrep)->second); current = entity_descriptor_map[Type::IfcFacetedBrepWithVoids] = new IfcEntityDescriptor(Type::IfcFacetedBrepWithVoids,entity_descriptor_map.find(Type::IfcManifoldSolidBrep)->second); current->add("Voids",false,Argument_ENTITY_LIST); @@ -1814,7 +1815,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcFlowControllerType] = new IfcEntityDescriptor(Type::IfcFlowControllerType,entity_descriptor_map.find(Type::IfcDistributionFlowElementType)->second); current = entity_descriptor_map[Type::IfcFlowFittingType] = new IfcEntityDescriptor(Type::IfcFlowFittingType,entity_descriptor_map.find(Type::IfcDistributionFlowElementType)->second); current = entity_descriptor_map[Type::IfcFlowMeterType] = new IfcEntityDescriptor(Type::IfcFlowMeterType,entity_descriptor_map.find(Type::IfcFlowControllerType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcFlowMeterTypeEnum); current = entity_descriptor_map[Type::IfcFlowMovingDeviceType] = new IfcEntityDescriptor(Type::IfcFlowMovingDeviceType,entity_descriptor_map.find(Type::IfcDistributionFlowElementType)->second); current = entity_descriptor_map[Type::IfcFlowSegmentType] = new IfcEntityDescriptor(Type::IfcFlowSegmentType,entity_descriptor_map.find(Type::IfcDistributionFlowElementType)->second); current = entity_descriptor_map[Type::IfcFlowStorageDeviceType] = new IfcEntityDescriptor(Type::IfcFlowStorageDeviceType,entity_descriptor_map.find(Type::IfcDistributionFlowElementType)->second); @@ -1823,90 +1824,90 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcFurnishingElement] = new IfcEntityDescriptor(Type::IfcFurnishingElement,entity_descriptor_map.find(Type::IfcElement)->second); current = entity_descriptor_map[Type::IfcFurnitureStandard] = new IfcEntityDescriptor(Type::IfcFurnitureStandard,entity_descriptor_map.find(Type::IfcControl)->second); current = entity_descriptor_map[Type::IfcGasTerminalType] = new IfcEntityDescriptor(Type::IfcGasTerminalType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcGasTerminalTypeEnum); current = entity_descriptor_map[Type::IfcGrid] = new IfcEntityDescriptor(Type::IfcGrid,entity_descriptor_map.find(Type::IfcProduct)->second); current->add("UAxes",false,Argument_ENTITY_LIST); current->add("VAxes",false,Argument_ENTITY_LIST); current->add("WAxes",true,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcGroup] = new IfcEntityDescriptor(Type::IfcGroup,entity_descriptor_map.find(Type::IfcObject)->second); current = entity_descriptor_map[Type::IfcHeatExchangerType] = new IfcEntityDescriptor(Type::IfcHeatExchangerType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcHeatExchangerTypeEnum); current = entity_descriptor_map[Type::IfcHumidifierType] = new IfcEntityDescriptor(Type::IfcHumidifierType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcHumidifierTypeEnum); current = entity_descriptor_map[Type::IfcInventory] = new IfcEntityDescriptor(Type::IfcInventory,entity_descriptor_map.find(Type::IfcGroup)->second); - current->add("InventoryType",false,Argument_ENUMERATION); + current->add("InventoryType",false,Argument_ENUMERATION,Type::IfcInventoryTypeEnum); current->add("Jurisdiction",false,Argument_ENTITY); current->add("ResponsiblePersons",false,Argument_ENTITY_LIST); current->add("LastUpdateDate",false,Argument_ENTITY); current->add("CurrentValue",true,Argument_ENTITY); current->add("OriginalValue",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcJunctionBoxType] = new IfcEntityDescriptor(Type::IfcJunctionBoxType,entity_descriptor_map.find(Type::IfcFlowFittingType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcJunctionBoxTypeEnum); current = entity_descriptor_map[Type::IfcLaborResource] = new IfcEntityDescriptor(Type::IfcLaborResource,entity_descriptor_map.find(Type::IfcConstructionResource)->second); current->add("SkillSet",true,Argument_STRING); current = entity_descriptor_map[Type::IfcLampType] = new IfcEntityDescriptor(Type::IfcLampType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcLampTypeEnum); current = entity_descriptor_map[Type::IfcLightFixtureType] = new IfcEntityDescriptor(Type::IfcLightFixtureType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcLightFixtureTypeEnum); current = entity_descriptor_map[Type::IfcLinearDimension] = new IfcEntityDescriptor(Type::IfcLinearDimension,entity_descriptor_map.find(Type::IfcDimensionCurveDirectedCallout)->second); current = entity_descriptor_map[Type::IfcMechanicalFastener] = new IfcEntityDescriptor(Type::IfcMechanicalFastener,entity_descriptor_map.find(Type::IfcFastener)->second); current->add("NominalDiameter",true,Argument_DOUBLE); current->add("NominalLength",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcMechanicalFastenerType] = new IfcEntityDescriptor(Type::IfcMechanicalFastenerType,entity_descriptor_map.find(Type::IfcFastenerType)->second); current = entity_descriptor_map[Type::IfcMemberType] = new IfcEntityDescriptor(Type::IfcMemberType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcMemberTypeEnum); current = entity_descriptor_map[Type::IfcMotorConnectionType] = new IfcEntityDescriptor(Type::IfcMotorConnectionType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcMotorConnectionTypeEnum); current = entity_descriptor_map[Type::IfcMove] = new IfcEntityDescriptor(Type::IfcMove,entity_descriptor_map.find(Type::IfcTask)->second); current->add("MoveFrom",false,Argument_ENTITY); current->add("MoveTo",false,Argument_ENTITY); current->add("PunchList",true,Argument_VECTOR_STRING); current = entity_descriptor_map[Type::IfcOccupant] = new IfcEntityDescriptor(Type::IfcOccupant,entity_descriptor_map.find(Type::IfcActor)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcOccupantTypeEnum); current = entity_descriptor_map[Type::IfcOpeningElement] = new IfcEntityDescriptor(Type::IfcOpeningElement,entity_descriptor_map.find(Type::IfcFeatureElementSubtraction)->second); current = entity_descriptor_map[Type::IfcOrderAction] = new IfcEntityDescriptor(Type::IfcOrderAction,entity_descriptor_map.find(Type::IfcTask)->second); current->add("ActionID",false,Argument_STRING); current = entity_descriptor_map[Type::IfcOutletType] = new IfcEntityDescriptor(Type::IfcOutletType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcOutletTypeEnum); current = entity_descriptor_map[Type::IfcPerformanceHistory] = new IfcEntityDescriptor(Type::IfcPerformanceHistory,entity_descriptor_map.find(Type::IfcControl)->second); current->add("LifeCyclePhase",false,Argument_STRING); current = entity_descriptor_map[Type::IfcPermit] = new IfcEntityDescriptor(Type::IfcPermit,entity_descriptor_map.find(Type::IfcControl)->second); current->add("PermitID",false,Argument_STRING); current = entity_descriptor_map[Type::IfcPipeFittingType] = new IfcEntityDescriptor(Type::IfcPipeFittingType,entity_descriptor_map.find(Type::IfcFlowFittingType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcPipeFittingTypeEnum); current = entity_descriptor_map[Type::IfcPipeSegmentType] = new IfcEntityDescriptor(Type::IfcPipeSegmentType,entity_descriptor_map.find(Type::IfcFlowSegmentType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcPipeSegmentTypeEnum); current = entity_descriptor_map[Type::IfcPlateType] = new IfcEntityDescriptor(Type::IfcPlateType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcPlateTypeEnum); current = entity_descriptor_map[Type::IfcPolyline] = new IfcEntityDescriptor(Type::IfcPolyline,entity_descriptor_map.find(Type::IfcBoundedCurve)->second); current->add("Points",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcPort] = new IfcEntityDescriptor(Type::IfcPort,entity_descriptor_map.find(Type::IfcProduct)->second); current = entity_descriptor_map[Type::IfcProcedure] = new IfcEntityDescriptor(Type::IfcProcedure,entity_descriptor_map.find(Type::IfcProcess)->second); current->add("ProcedureID",false,Argument_STRING); - current->add("ProcedureType",false,Argument_ENUMERATION); + current->add("ProcedureType",false,Argument_ENUMERATION,Type::IfcProcedureTypeEnum); current->add("UserDefinedProcedureType",true,Argument_STRING); current = entity_descriptor_map[Type::IfcProjectOrder] = new IfcEntityDescriptor(Type::IfcProjectOrder,entity_descriptor_map.find(Type::IfcControl)->second); current->add("ID",false,Argument_STRING); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcProjectOrderTypeEnum); current->add("Status",true,Argument_STRING); current = entity_descriptor_map[Type::IfcProjectOrderRecord] = new IfcEntityDescriptor(Type::IfcProjectOrderRecord,entity_descriptor_map.find(Type::IfcControl)->second); current->add("Records",false,Argument_ENTITY_LIST); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcProjectOrderRecordTypeEnum); current = entity_descriptor_map[Type::IfcProjectionElement] = new IfcEntityDescriptor(Type::IfcProjectionElement,entity_descriptor_map.find(Type::IfcFeatureElementAddition)->second); current = entity_descriptor_map[Type::IfcProtectiveDeviceType] = new IfcEntityDescriptor(Type::IfcProtectiveDeviceType,entity_descriptor_map.find(Type::IfcFlowControllerType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcProtectiveDeviceTypeEnum); current = entity_descriptor_map[Type::IfcPumpType] = new IfcEntityDescriptor(Type::IfcPumpType,entity_descriptor_map.find(Type::IfcFlowMovingDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcPumpTypeEnum); current = entity_descriptor_map[Type::IfcRadiusDimension] = new IfcEntityDescriptor(Type::IfcRadiusDimension,entity_descriptor_map.find(Type::IfcDimensionCurveDirectedCallout)->second); current = entity_descriptor_map[Type::IfcRailingType] = new IfcEntityDescriptor(Type::IfcRailingType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcRailingTypeEnum); current = entity_descriptor_map[Type::IfcRampFlightType] = new IfcEntityDescriptor(Type::IfcRampFlightType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcRampFlightTypeEnum); current = entity_descriptor_map[Type::IfcRelAggregates] = new IfcEntityDescriptor(Type::IfcRelAggregates,entity_descriptor_map.find(Type::IfcRelDecomposes)->second); current = entity_descriptor_map[Type::IfcRelAssignsTasks] = new IfcEntityDescriptor(Type::IfcRelAssignsTasks,entity_descriptor_map.find(Type::IfcRelAssignsToControl)->second); current->add("TimeForTask",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcSanitaryTerminalType] = new IfcEntityDescriptor(Type::IfcSanitaryTerminalType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcSanitaryTerminalTypeEnum); current = entity_descriptor_map[Type::IfcScheduleTimeControl] = new IfcEntityDescriptor(Type::IfcScheduleTimeControl,entity_descriptor_map.find(Type::IfcControl)->second); current->add("ActualStart",true,Argument_ENTITY); current->add("EarlyStart",true,Argument_ENTITY); @@ -1927,7 +1928,7 @@ void InitDescriptorMap() { current->add("FinishFloat",true,Argument_DOUBLE); current->add("Completion",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcServiceLife] = new IfcEntityDescriptor(Type::IfcServiceLife,entity_descriptor_map.find(Type::IfcControl)->second); - current->add("ServiceLifeType",false,Argument_ENUMERATION); + current->add("ServiceLifeType",false,Argument_ENUMERATION,Type::IfcServiceLifeTypeEnum); current->add("ServiceLifeDuration",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcSite] = new IfcEntityDescriptor(Type::IfcSite,entity_descriptor_map.find(Type::IfcSpatialStructureElement)->second); current->add("RefLatitude",true,Argument_VECTOR_INT); @@ -1936,12 +1937,12 @@ void InitDescriptorMap() { current->add("LandTitleNumber",true,Argument_STRING); current->add("SiteAddress",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcSlabType] = new IfcEntityDescriptor(Type::IfcSlabType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcSlabTypeEnum); current = entity_descriptor_map[Type::IfcSpace] = new IfcEntityDescriptor(Type::IfcSpace,entity_descriptor_map.find(Type::IfcSpatialStructureElement)->second); - current->add("InteriorOrExteriorSpace",false,Argument_ENUMERATION); + current->add("InteriorOrExteriorSpace",false,Argument_ENUMERATION,Type::IfcInternalOrExternalEnum); current->add("ElevationWithFlooring",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcSpaceHeaterType] = new IfcEntityDescriptor(Type::IfcSpaceHeaterType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcSpaceHeaterTypeEnum); current = entity_descriptor_map[Type::IfcSpaceProgram] = new IfcEntityDescriptor(Type::IfcSpaceProgram,entity_descriptor_map.find(Type::IfcControl)->second); current->add("SpaceProgramIdentifier",false,Argument_STRING); current->add("MaxRequiredArea",true,Argument_DOUBLE); @@ -1949,11 +1950,11 @@ void InitDescriptorMap() { current->add("RequestedLocation",true,Argument_ENTITY); current->add("StandardRequiredArea",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcSpaceType] = new IfcEntityDescriptor(Type::IfcSpaceType,entity_descriptor_map.find(Type::IfcSpatialStructureElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcSpaceTypeEnum); current = entity_descriptor_map[Type::IfcStackTerminalType] = new IfcEntityDescriptor(Type::IfcStackTerminalType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcStackTerminalTypeEnum); current = entity_descriptor_map[Type::IfcStairFlightType] = new IfcEntityDescriptor(Type::IfcStairFlightType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcStairFlightTypeEnum); current = entity_descriptor_map[Type::IfcStructuralAction] = new IfcEntityDescriptor(Type::IfcStructuralAction,entity_descriptor_map.find(Type::IfcStructuralActivity)->second); current->add("DestabilizingLoad",false,Argument_BOOL); current->add("CausedBy",true,Argument_ENTITY); @@ -1961,21 +1962,21 @@ void InitDescriptorMap() { current->add("AppliedCondition",true,Argument_ENTITY); current = entity_descriptor_map[Type::IfcStructuralCurveConnection] = new IfcEntityDescriptor(Type::IfcStructuralCurveConnection,entity_descriptor_map.find(Type::IfcStructuralConnection)->second); current = entity_descriptor_map[Type::IfcStructuralCurveMember] = new IfcEntityDescriptor(Type::IfcStructuralCurveMember,entity_descriptor_map.find(Type::IfcStructuralMember)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcStructuralCurveTypeEnum); current = entity_descriptor_map[Type::IfcStructuralCurveMemberVarying] = new IfcEntityDescriptor(Type::IfcStructuralCurveMemberVarying,entity_descriptor_map.find(Type::IfcStructuralCurveMember)->second); current = entity_descriptor_map[Type::IfcStructuralLinearAction] = new IfcEntityDescriptor(Type::IfcStructuralLinearAction,entity_descriptor_map.find(Type::IfcStructuralAction)->second); - current->add("ProjectedOrTrue",false,Argument_ENUMERATION); + current->add("ProjectedOrTrue",false,Argument_ENUMERATION,Type::IfcProjectedOrTrueLengthEnum); current = entity_descriptor_map[Type::IfcStructuralLinearActionVarying] = new IfcEntityDescriptor(Type::IfcStructuralLinearActionVarying,entity_descriptor_map.find(Type::IfcStructuralLinearAction)->second); current->add("VaryingAppliedLoadLocation",false,Argument_ENTITY); current->add("SubsequentAppliedLoads",false,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcStructuralLoadGroup] = new IfcEntityDescriptor(Type::IfcStructuralLoadGroup,entity_descriptor_map.find(Type::IfcGroup)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); - current->add("ActionType",false,Argument_ENUMERATION); - current->add("ActionSource",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcLoadGroupTypeEnum); + current->add("ActionType",false,Argument_ENUMERATION,Type::IfcActionTypeEnum); + current->add("ActionSource",false,Argument_ENUMERATION,Type::IfcActionSourceTypeEnum); current->add("Coefficient",true,Argument_DOUBLE); current->add("Purpose",true,Argument_STRING); current = entity_descriptor_map[Type::IfcStructuralPlanarAction] = new IfcEntityDescriptor(Type::IfcStructuralPlanarAction,entity_descriptor_map.find(Type::IfcStructuralAction)->second); - current->add("ProjectedOrTrue",false,Argument_ENUMERATION); + current->add("ProjectedOrTrue",false,Argument_ENUMERATION,Type::IfcProjectedOrTrueLengthEnum); current = entity_descriptor_map[Type::IfcStructuralPlanarActionVarying] = new IfcEntityDescriptor(Type::IfcStructuralPlanarActionVarying,entity_descriptor_map.find(Type::IfcStructuralPlanarAction)->second); current->add("VaryingAppliedLoadLocation",false,Argument_ENTITY); current->add("SubsequentAppliedLoads",false,Argument_ENTITY_LIST); @@ -1983,7 +1984,7 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcStructuralPointConnection] = new IfcEntityDescriptor(Type::IfcStructuralPointConnection,entity_descriptor_map.find(Type::IfcStructuralConnection)->second); current = entity_descriptor_map[Type::IfcStructuralPointReaction] = new IfcEntityDescriptor(Type::IfcStructuralPointReaction,entity_descriptor_map.find(Type::IfcStructuralReaction)->second); current = entity_descriptor_map[Type::IfcStructuralResultGroup] = new IfcEntityDescriptor(Type::IfcStructuralResultGroup,entity_descriptor_map.find(Type::IfcGroup)->second); - current->add("TheoryType",false,Argument_ENUMERATION); + current->add("TheoryType",false,Argument_ENUMERATION,Type::IfcAnalysisTheoryTypeEnum); current->add("ResultForLoadGroup",true,Argument_ENTITY); current->add("IsLinear",false,Argument_BOOL); current = entity_descriptor_map[Type::IfcStructuralSurfaceConnection] = new IfcEntityDescriptor(Type::IfcStructuralSurfaceConnection,entity_descriptor_map.find(Type::IfcStructuralConnection)->second); @@ -1991,18 +1992,18 @@ void InitDescriptorMap() { current->add("SubContractor",true,Argument_ENTITY); current->add("JobDescription",true,Argument_STRING); current = entity_descriptor_map[Type::IfcSwitchingDeviceType] = new IfcEntityDescriptor(Type::IfcSwitchingDeviceType,entity_descriptor_map.find(Type::IfcFlowControllerType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcSwitchingDeviceTypeEnum); current = entity_descriptor_map[Type::IfcSystem] = new IfcEntityDescriptor(Type::IfcSystem,entity_descriptor_map.find(Type::IfcGroup)->second); current = entity_descriptor_map[Type::IfcTankType] = new IfcEntityDescriptor(Type::IfcTankType,entity_descriptor_map.find(Type::IfcFlowStorageDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcTankTypeEnum); current = entity_descriptor_map[Type::IfcTimeSeriesSchedule] = new IfcEntityDescriptor(Type::IfcTimeSeriesSchedule,entity_descriptor_map.find(Type::IfcControl)->second); current->add("ApplicableDates",true,Argument_ENTITY_LIST); - current->add("TimeSeriesScheduleType",false,Argument_ENUMERATION); + current->add("TimeSeriesScheduleType",false,Argument_ENUMERATION,Type::IfcTimeSeriesScheduleTypeEnum); current->add("TimeSeries",false,Argument_ENTITY); current = entity_descriptor_map[Type::IfcTransformerType] = new IfcEntityDescriptor(Type::IfcTransformerType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcTransformerTypeEnum); current = entity_descriptor_map[Type::IfcTransportElement] = new IfcEntityDescriptor(Type::IfcTransportElement,entity_descriptor_map.find(Type::IfcElement)->second); - current->add("OperationType",true,Argument_ENUMERATION); + current->add("OperationType",true,Argument_ENUMERATION,Type::IfcTransportElementTypeEnum); current->add("CapacityByWeight",true,Argument_DOUBLE); current->add("CapacityByNumber",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcTrimmedCurve] = new IfcEntityDescriptor(Type::IfcTrimmedCurve,entity_descriptor_map.find(Type::IfcBoundedCurve)->second); @@ -2010,18 +2011,18 @@ void InitDescriptorMap() { current->add("Trim1",false,Argument_ENTITY_LIST); current->add("Trim2",false,Argument_ENTITY_LIST); current->add("SenseAgreement",false,Argument_BOOL); - current->add("MasterRepresentation",false,Argument_ENUMERATION); + current->add("MasterRepresentation",false,Argument_ENUMERATION,Type::IfcTrimmingPreference); current = entity_descriptor_map[Type::IfcTubeBundleType] = new IfcEntityDescriptor(Type::IfcTubeBundleType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcTubeBundleTypeEnum); current = entity_descriptor_map[Type::IfcUnitaryEquipmentType] = new IfcEntityDescriptor(Type::IfcUnitaryEquipmentType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcUnitaryEquipmentTypeEnum); current = entity_descriptor_map[Type::IfcValveType] = new IfcEntityDescriptor(Type::IfcValveType,entity_descriptor_map.find(Type::IfcFlowControllerType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcValveTypeEnum); current = entity_descriptor_map[Type::IfcVirtualElement] = new IfcEntityDescriptor(Type::IfcVirtualElement,entity_descriptor_map.find(Type::IfcElement)->second); current = entity_descriptor_map[Type::IfcWallType] = new IfcEntityDescriptor(Type::IfcWallType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcWallTypeEnum); current = entity_descriptor_map[Type::IfcWasteTerminalType] = new IfcEntityDescriptor(Type::IfcWasteTerminalType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcWasteTerminalTypeEnum); current = entity_descriptor_map[Type::IfcWorkControl] = new IfcEntityDescriptor(Type::IfcWorkControl,entity_descriptor_map.find(Type::IfcControl)->second); current->add("Identifier",false,Argument_STRING); current->add("CreationDate",false,Argument_ENTITY); @@ -2031,7 +2032,7 @@ void InitDescriptorMap() { current->add("TotalFloat",true,Argument_DOUBLE); current->add("StartTime",false,Argument_ENTITY); current->add("FinishTime",true,Argument_ENTITY); - current->add("WorkControlType",true,Argument_ENUMERATION); + current->add("WorkControlType",true,Argument_ENUMERATION,Type::IfcWorkControlTypeEnum); current->add("UserDefinedControlType",true,Argument_STRING); current = entity_descriptor_map[Type::IfcWorkPlan] = new IfcEntityDescriptor(Type::IfcWorkPlan,entity_descriptor_map.find(Type::IfcWorkControl)->second); current = entity_descriptor_map[Type::IfcWorkSchedule] = new IfcEntityDescriptor(Type::IfcWorkSchedule,entity_descriptor_map.find(Type::IfcWorkControl)->second); @@ -2040,11 +2041,11 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcActionRequest] = new IfcEntityDescriptor(Type::IfcActionRequest,entity_descriptor_map.find(Type::IfcControl)->second); current->add("RequestID",false,Argument_STRING); current = entity_descriptor_map[Type::IfcAirTerminalBoxType] = new IfcEntityDescriptor(Type::IfcAirTerminalBoxType,entity_descriptor_map.find(Type::IfcFlowControllerType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcAirTerminalBoxTypeEnum); current = entity_descriptor_map[Type::IfcAirTerminalType] = new IfcEntityDescriptor(Type::IfcAirTerminalType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcAirTerminalTypeEnum); current = entity_descriptor_map[Type::IfcAirToAirHeatRecoveryType] = new IfcEntityDescriptor(Type::IfcAirToAirHeatRecoveryType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcAirToAirHeatRecoveryTypeEnum); current = entity_descriptor_map[Type::IfcAngularDimension] = new IfcEntityDescriptor(Type::IfcAngularDimension,entity_descriptor_map.find(Type::IfcDimensionCurveDirectedCallout)->second); current = entity_descriptor_map[Type::IfcAsset] = new IfcEntityDescriptor(Type::IfcAsset,entity_descriptor_map.find(Type::IfcGroup)->second); current->add("AssetID",false,Argument_STRING); @@ -2059,38 +2060,38 @@ void InitDescriptorMap() { current = entity_descriptor_map[Type::IfcBSplineCurve] = new IfcEntityDescriptor(Type::IfcBSplineCurve,entity_descriptor_map.find(Type::IfcBoundedCurve)->second); current->add("Degree",false,Argument_INT); current->add("ControlPointsList",false,Argument_ENTITY_LIST); - current->add("CurveForm",false,Argument_ENUMERATION); + current->add("CurveForm",false,Argument_ENUMERATION,Type::IfcBSplineCurveForm); current->add("ClosedCurve",false,Argument_BOOL); current->add("SelfIntersect",false,Argument_BOOL); current = entity_descriptor_map[Type::IfcBeamType] = new IfcEntityDescriptor(Type::IfcBeamType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcBeamTypeEnum); current = entity_descriptor_map[Type::IfcBezierCurve] = new IfcEntityDescriptor(Type::IfcBezierCurve,entity_descriptor_map.find(Type::IfcBSplineCurve)->second); current = entity_descriptor_map[Type::IfcBoilerType] = new IfcEntityDescriptor(Type::IfcBoilerType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcBoilerTypeEnum); current = entity_descriptor_map[Type::IfcBuildingElement] = new IfcEntityDescriptor(Type::IfcBuildingElement,entity_descriptor_map.find(Type::IfcElement)->second); current = entity_descriptor_map[Type::IfcBuildingElementComponent] = new IfcEntityDescriptor(Type::IfcBuildingElementComponent,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcBuildingElementPart] = new IfcEntityDescriptor(Type::IfcBuildingElementPart,entity_descriptor_map.find(Type::IfcBuildingElementComponent)->second); current = entity_descriptor_map[Type::IfcBuildingElementProxy] = new IfcEntityDescriptor(Type::IfcBuildingElementProxy,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("CompositionType",true,Argument_ENUMERATION); + current->add("CompositionType",true,Argument_ENUMERATION,Type::IfcElementCompositionEnum); current = entity_descriptor_map[Type::IfcBuildingElementProxyType] = new IfcEntityDescriptor(Type::IfcBuildingElementProxyType,entity_descriptor_map.find(Type::IfcBuildingElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcBuildingElementProxyTypeEnum); current = entity_descriptor_map[Type::IfcCableCarrierFittingType] = new IfcEntityDescriptor(Type::IfcCableCarrierFittingType,entity_descriptor_map.find(Type::IfcFlowFittingType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCableCarrierFittingTypeEnum); current = entity_descriptor_map[Type::IfcCableCarrierSegmentType] = new IfcEntityDescriptor(Type::IfcCableCarrierSegmentType,entity_descriptor_map.find(Type::IfcFlowSegmentType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCableCarrierSegmentTypeEnum); current = entity_descriptor_map[Type::IfcCableSegmentType] = new IfcEntityDescriptor(Type::IfcCableSegmentType,entity_descriptor_map.find(Type::IfcFlowSegmentType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCableSegmentTypeEnum); current = entity_descriptor_map[Type::IfcChillerType] = new IfcEntityDescriptor(Type::IfcChillerType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcChillerTypeEnum); current = entity_descriptor_map[Type::IfcCircle] = new IfcEntityDescriptor(Type::IfcCircle,entity_descriptor_map.find(Type::IfcConic)->second); current->add("Radius",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcCoilType] = new IfcEntityDescriptor(Type::IfcCoilType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCoilTypeEnum); current = entity_descriptor_map[Type::IfcColumn] = new IfcEntityDescriptor(Type::IfcColumn,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcCompressorType] = new IfcEntityDescriptor(Type::IfcCompressorType,entity_descriptor_map.find(Type::IfcFlowMovingDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCompressorTypeEnum); current = entity_descriptor_map[Type::IfcCondenserType] = new IfcEntityDescriptor(Type::IfcCondenserType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCondenserTypeEnum); current = entity_descriptor_map[Type::IfcCondition] = new IfcEntityDescriptor(Type::IfcCondition,entity_descriptor_map.find(Type::IfcGroup)->second); current = entity_descriptor_map[Type::IfcConditionCriterion] = new IfcEntityDescriptor(Type::IfcConditionCriterion,entity_descriptor_map.find(Type::IfcControl)->second); current->add("Criterion",false,Argument_ENTITY); @@ -2101,76 +2102,76 @@ void InitDescriptorMap() { current->add("UsageRatio",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcConstructionProductResource] = new IfcEntityDescriptor(Type::IfcConstructionProductResource,entity_descriptor_map.find(Type::IfcConstructionResource)->second); current = entity_descriptor_map[Type::IfcCooledBeamType] = new IfcEntityDescriptor(Type::IfcCooledBeamType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCooledBeamTypeEnum); current = entity_descriptor_map[Type::IfcCoolingTowerType] = new IfcEntityDescriptor(Type::IfcCoolingTowerType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcCoolingTowerTypeEnum); current = entity_descriptor_map[Type::IfcCovering] = new IfcEntityDescriptor(Type::IfcCovering,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("PredefinedType",true,Argument_ENUMERATION); + current->add("PredefinedType",true,Argument_ENUMERATION,Type::IfcCoveringTypeEnum); current = entity_descriptor_map[Type::IfcCurtainWall] = new IfcEntityDescriptor(Type::IfcCurtainWall,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcDamperType] = new IfcEntityDescriptor(Type::IfcDamperType,entity_descriptor_map.find(Type::IfcFlowControllerType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcDamperTypeEnum); current = entity_descriptor_map[Type::IfcDiameterDimension] = new IfcEntityDescriptor(Type::IfcDiameterDimension,entity_descriptor_map.find(Type::IfcDimensionCurveDirectedCallout)->second); current = entity_descriptor_map[Type::IfcDiscreteAccessory] = new IfcEntityDescriptor(Type::IfcDiscreteAccessory,entity_descriptor_map.find(Type::IfcElementComponent)->second); current = entity_descriptor_map[Type::IfcDiscreteAccessoryType] = new IfcEntityDescriptor(Type::IfcDiscreteAccessoryType,entity_descriptor_map.find(Type::IfcElementComponentType)->second); current = entity_descriptor_map[Type::IfcDistributionChamberElementType] = new IfcEntityDescriptor(Type::IfcDistributionChamberElementType,entity_descriptor_map.find(Type::IfcDistributionFlowElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcDistributionChamberElementTypeEnum); current = entity_descriptor_map[Type::IfcDistributionControlElementType] = new IfcEntityDescriptor(Type::IfcDistributionControlElementType,entity_descriptor_map.find(Type::IfcDistributionElementType)->second); current = entity_descriptor_map[Type::IfcDistributionElement] = new IfcEntityDescriptor(Type::IfcDistributionElement,entity_descriptor_map.find(Type::IfcElement)->second); current = entity_descriptor_map[Type::IfcDistributionFlowElement] = new IfcEntityDescriptor(Type::IfcDistributionFlowElement,entity_descriptor_map.find(Type::IfcDistributionElement)->second); current = entity_descriptor_map[Type::IfcDistributionPort] = new IfcEntityDescriptor(Type::IfcDistributionPort,entity_descriptor_map.find(Type::IfcPort)->second); - current->add("FlowDirection",true,Argument_ENUMERATION); + current->add("FlowDirection",true,Argument_ENUMERATION,Type::IfcFlowDirectionEnum); current = entity_descriptor_map[Type::IfcDoor] = new IfcEntityDescriptor(Type::IfcDoor,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current->add("OverallHeight",true,Argument_DOUBLE); current->add("OverallWidth",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcDuctFittingType] = new IfcEntityDescriptor(Type::IfcDuctFittingType,entity_descriptor_map.find(Type::IfcFlowFittingType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcDuctFittingTypeEnum); current = entity_descriptor_map[Type::IfcDuctSegmentType] = new IfcEntityDescriptor(Type::IfcDuctSegmentType,entity_descriptor_map.find(Type::IfcFlowSegmentType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcDuctSegmentTypeEnum); current = entity_descriptor_map[Type::IfcDuctSilencerType] = new IfcEntityDescriptor(Type::IfcDuctSilencerType,entity_descriptor_map.find(Type::IfcFlowTreatmentDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcDuctSilencerTypeEnum); current = entity_descriptor_map[Type::IfcEdgeFeature] = new IfcEntityDescriptor(Type::IfcEdgeFeature,entity_descriptor_map.find(Type::IfcFeatureElementSubtraction)->second); current->add("FeatureLength",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcElectricApplianceType] = new IfcEntityDescriptor(Type::IfcElectricApplianceType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcElectricApplianceTypeEnum); current = entity_descriptor_map[Type::IfcElectricFlowStorageDeviceType] = new IfcEntityDescriptor(Type::IfcElectricFlowStorageDeviceType,entity_descriptor_map.find(Type::IfcFlowStorageDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcElectricFlowStorageDeviceTypeEnum); current = entity_descriptor_map[Type::IfcElectricGeneratorType] = new IfcEntityDescriptor(Type::IfcElectricGeneratorType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcElectricGeneratorTypeEnum); current = entity_descriptor_map[Type::IfcElectricHeaterType] = new IfcEntityDescriptor(Type::IfcElectricHeaterType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcElectricHeaterTypeEnum); current = entity_descriptor_map[Type::IfcElectricMotorType] = new IfcEntityDescriptor(Type::IfcElectricMotorType,entity_descriptor_map.find(Type::IfcEnergyConversionDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcElectricMotorTypeEnum); current = entity_descriptor_map[Type::IfcElectricTimeControlType] = new IfcEntityDescriptor(Type::IfcElectricTimeControlType,entity_descriptor_map.find(Type::IfcFlowControllerType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcElectricTimeControlTypeEnum); current = entity_descriptor_map[Type::IfcElectricalCircuit] = new IfcEntityDescriptor(Type::IfcElectricalCircuit,entity_descriptor_map.find(Type::IfcSystem)->second); current = entity_descriptor_map[Type::IfcElectricalElement] = new IfcEntityDescriptor(Type::IfcElectricalElement,entity_descriptor_map.find(Type::IfcElement)->second); current = entity_descriptor_map[Type::IfcEnergyConversionDevice] = new IfcEntityDescriptor(Type::IfcEnergyConversionDevice,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFanType] = new IfcEntityDescriptor(Type::IfcFanType,entity_descriptor_map.find(Type::IfcFlowMovingDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcFanTypeEnum); current = entity_descriptor_map[Type::IfcFilterType] = new IfcEntityDescriptor(Type::IfcFilterType,entity_descriptor_map.find(Type::IfcFlowTreatmentDeviceType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcFilterTypeEnum); current = entity_descriptor_map[Type::IfcFireSuppressionTerminalType] = new IfcEntityDescriptor(Type::IfcFireSuppressionTerminalType,entity_descriptor_map.find(Type::IfcFlowTerminalType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcFireSuppressionTerminalTypeEnum); current = entity_descriptor_map[Type::IfcFlowController] = new IfcEntityDescriptor(Type::IfcFlowController,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFlowFitting] = new IfcEntityDescriptor(Type::IfcFlowFitting,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFlowInstrumentType] = new IfcEntityDescriptor(Type::IfcFlowInstrumentType,entity_descriptor_map.find(Type::IfcDistributionControlElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcFlowInstrumentTypeEnum); current = entity_descriptor_map[Type::IfcFlowMovingDevice] = new IfcEntityDescriptor(Type::IfcFlowMovingDevice,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFlowSegment] = new IfcEntityDescriptor(Type::IfcFlowSegment,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFlowStorageDevice] = new IfcEntityDescriptor(Type::IfcFlowStorageDevice,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFlowTerminal] = new IfcEntityDescriptor(Type::IfcFlowTerminal,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFlowTreatmentDevice] = new IfcEntityDescriptor(Type::IfcFlowTreatmentDevice,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcFooting] = new IfcEntityDescriptor(Type::IfcFooting,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcFootingTypeEnum); current = entity_descriptor_map[Type::IfcMember] = new IfcEntityDescriptor(Type::IfcMember,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcPile] = new IfcEntityDescriptor(Type::IfcPile,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); - current->add("ConstructionType",true,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcPileTypeEnum); + current->add("ConstructionType",true,Argument_ENUMERATION,Type::IfcPileConstructionEnum); current = entity_descriptor_map[Type::IfcPlate] = new IfcEntityDescriptor(Type::IfcPlate,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcRailing] = new IfcEntityDescriptor(Type::IfcRailing,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("PredefinedType",true,Argument_ENUMERATION); + current->add("PredefinedType",true,Argument_ENUMERATION,Type::IfcRailingTypeEnum); current = entity_descriptor_map[Type::IfcRamp] = new IfcEntityDescriptor(Type::IfcRamp,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("ShapeType",false,Argument_ENUMERATION); + current->add("ShapeType",false,Argument_ENUMERATION,Type::IfcRampTypeEnum); current = entity_descriptor_map[Type::IfcRampFlight] = new IfcEntityDescriptor(Type::IfcRampFlight,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcRationalBezierCurve] = new IfcEntityDescriptor(Type::IfcRationalBezierCurve,entity_descriptor_map.find(Type::IfcBezierCurve)->second); current->add("WeightsData",false,Argument_VECTOR_DOUBLE); @@ -2186,27 +2187,27 @@ void InitDescriptorMap() { current->add("LongitudinalBarSpacing",false,Argument_DOUBLE); current->add("TransverseBarSpacing",false,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcRoof] = new IfcEntityDescriptor(Type::IfcRoof,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("ShapeType",false,Argument_ENUMERATION); + current->add("ShapeType",false,Argument_ENUMERATION,Type::IfcRoofTypeEnum); current = entity_descriptor_map[Type::IfcRoundedEdgeFeature] = new IfcEntityDescriptor(Type::IfcRoundedEdgeFeature,entity_descriptor_map.find(Type::IfcEdgeFeature)->second); current->add("Radius",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcSensorType] = new IfcEntityDescriptor(Type::IfcSensorType,entity_descriptor_map.find(Type::IfcDistributionControlElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcSensorTypeEnum); current = entity_descriptor_map[Type::IfcSlab] = new IfcEntityDescriptor(Type::IfcSlab,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("PredefinedType",true,Argument_ENUMERATION); + current->add("PredefinedType",true,Argument_ENUMERATION,Type::IfcSlabTypeEnum); current = entity_descriptor_map[Type::IfcStair] = new IfcEntityDescriptor(Type::IfcStair,entity_descriptor_map.find(Type::IfcBuildingElement)->second); - current->add("ShapeType",false,Argument_ENUMERATION); + current->add("ShapeType",false,Argument_ENUMERATION,Type::IfcStairTypeEnum); current = entity_descriptor_map[Type::IfcStairFlight] = new IfcEntityDescriptor(Type::IfcStairFlight,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current->add("NumberOfRiser",true,Argument_INT); current->add("NumberOfTreads",true,Argument_INT); current->add("RiserHeight",true,Argument_DOUBLE); current->add("TreadLength",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcStructuralAnalysisModel] = new IfcEntityDescriptor(Type::IfcStructuralAnalysisModel,entity_descriptor_map.find(Type::IfcSystem)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcAnalysisModelTypeEnum); current->add("OrientationOf2DPlane",true,Argument_ENTITY); current->add("LoadedBy",true,Argument_ENTITY_LIST); current->add("HasResults",true,Argument_ENTITY_LIST); current = entity_descriptor_map[Type::IfcTendon] = new IfcEntityDescriptor(Type::IfcTendon,entity_descriptor_map.find(Type::IfcReinforcingElement)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcTendonTypeEnum); current->add("NominalDiameter",false,Argument_DOUBLE); current->add("CrossSectionArea",false,Argument_DOUBLE); current->add("TensionForce",true,Argument_DOUBLE); @@ -2216,34 +2217,1675 @@ void InitDescriptorMap() { current->add("MinCurvatureRadius",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcTendonAnchor] = new IfcEntityDescriptor(Type::IfcTendonAnchor,entity_descriptor_map.find(Type::IfcReinforcingElement)->second); current = entity_descriptor_map[Type::IfcVibrationIsolatorType] = new IfcEntityDescriptor(Type::IfcVibrationIsolatorType,entity_descriptor_map.find(Type::IfcDiscreteAccessoryType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcVibrationIsolatorTypeEnum); current = entity_descriptor_map[Type::IfcWall] = new IfcEntityDescriptor(Type::IfcWall,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcWallStandardCase] = new IfcEntityDescriptor(Type::IfcWallStandardCase,entity_descriptor_map.find(Type::IfcWall)->second); current = entity_descriptor_map[Type::IfcWindow] = new IfcEntityDescriptor(Type::IfcWindow,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current->add("OverallHeight",true,Argument_DOUBLE); current->add("OverallWidth",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcActuatorType] = new IfcEntityDescriptor(Type::IfcActuatorType,entity_descriptor_map.find(Type::IfcDistributionControlElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcActuatorTypeEnum); current = entity_descriptor_map[Type::IfcAlarmType] = new IfcEntityDescriptor(Type::IfcAlarmType,entity_descriptor_map.find(Type::IfcDistributionControlElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcAlarmTypeEnum); current = entity_descriptor_map[Type::IfcBeam] = new IfcEntityDescriptor(Type::IfcBeam,entity_descriptor_map.find(Type::IfcBuildingElement)->second); current = entity_descriptor_map[Type::IfcChamferEdgeFeature] = new IfcEntityDescriptor(Type::IfcChamferEdgeFeature,entity_descriptor_map.find(Type::IfcEdgeFeature)->second); current->add("Width",true,Argument_DOUBLE); current->add("Height",true,Argument_DOUBLE); current = entity_descriptor_map[Type::IfcControllerType] = new IfcEntityDescriptor(Type::IfcControllerType,entity_descriptor_map.find(Type::IfcDistributionControlElementType)->second); - current->add("PredefinedType",false,Argument_ENUMERATION); + current->add("PredefinedType",false,Argument_ENUMERATION,Type::IfcControllerTypeEnum); current = entity_descriptor_map[Type::IfcDistributionChamberElement] = new IfcEntityDescriptor(Type::IfcDistributionChamberElement,entity_descriptor_map.find(Type::IfcDistributionFlowElement)->second); current = entity_descriptor_map[Type::IfcDistributionControlElement] = new IfcEntityDescriptor(Type::IfcDistributionControlElement,entity_descriptor_map.find(Type::IfcDistributionElement)->second); current->add("ControlElementId",true,Argument_STRING); current = entity_descriptor_map[Type::IfcElectricDistributionPoint] = new IfcEntityDescriptor(Type::IfcElectricDistributionPoint,entity_descriptor_map.find(Type::IfcFlowController)->second); - current->add("DistributionPointFunction",false,Argument_ENUMERATION); + current->add("DistributionPointFunction",false,Argument_ENUMERATION,Type::IfcElectricDistributionPointFunctionEnum); current->add("UserDefinedFunction",true,Argument_STRING); current = entity_descriptor_map[Type::IfcReinforcingBar] = new IfcEntityDescriptor(Type::IfcReinforcingBar,entity_descriptor_map.find(Type::IfcReinforcingElement)->second); current->add("NominalDiameter",false,Argument_DOUBLE); current->add("CrossSectionArea",false,Argument_DOUBLE); current->add("BarLength",true,Argument_DOUBLE); - current->add("BarRole",false,Argument_ENUMERATION); - current->add("BarSurface",true,Argument_ENUMERATION); + current->add("BarRole",false,Argument_ENUMERATION,Type::IfcReinforcingBarRoleEnum); + current->add("BarSurface",true,Argument_ENUMERATION,Type::IfcReinforcingBarSurfaceEnum); + // Enumerations + IfcEnumerationDescriptor* current_enum; + std::vector values; + values.clear(); values.reserve(128); + values.push_back("SINGLE_SWING_LEFT"); + values.push_back("SINGLE_SWING_RIGHT"); + values.push_back("DOUBLE_DOOR_SINGLE_SWING"); + values.push_back("DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"); + values.push_back("DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"); + values.push_back("DOUBLE_SWING_LEFT"); + values.push_back("DOUBLE_SWING_RIGHT"); + values.push_back("DOUBLE_DOOR_DOUBLE_SWING"); + values.push_back("SLIDING_TO_LEFT"); + values.push_back("SLIDING_TO_RIGHT"); + values.push_back("DOUBLE_DOOR_SLIDING"); + values.push_back("FOLDING_TO_LEFT"); + values.push_back("FOLDING_TO_RIGHT"); + values.push_back("DOUBLE_DOOR_FOLDING"); + values.push_back("REVOLVING"); + values.push_back("ROLLINGUP"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDoorStyleOperationEnum] = new IfcEnumerationDescriptor(Type::IfcDoorStyleOperationEnum, values); + values.clear(); values.reserve(128); + values.push_back("TIMECLOCK"); + values.push_back("TIMEDELAY"); + values.push_back("RELAY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricTimeControlTypeEnum] = new IfcEnumerationDescriptor(Type::IfcElectricTimeControlTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("GRILLE"); + values.push_back("REGISTER"); + values.push_back("DIFFUSER"); + values.push_back("EYEBALL"); + values.push_back("IRIS"); + values.push_back("LINEARGRILLE"); + values.push_back("LINEARDIFFUSER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAirTerminalTypeEnum] = new IfcEnumerationDescriptor(Type::IfcAirTerminalTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CHANGEORDER"); + values.push_back("MAINTENANCEWORKORDER"); + values.push_back("MOVEORDER"); + values.push_back("PURCHASEORDER"); + values.push_back("WORKORDER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcProjectOrderTypeEnum] = new IfcEnumerationDescriptor(Type::IfcProjectOrderTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("START_START"); + values.push_back("START_FINISH"); + values.push_back("FINISH_START"); + values.push_back("FINISH_FINISH"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSequenceEnum] = new IfcEnumerationDescriptor(Type::IfcSequenceEnum, values); + values.clear(); values.reserve(128); + values.push_back("DIRECTION_X"); + values.push_back("DIRECTION_Y"); + current_enum = enumeration_descriptor_map[Type::IfcRibPlateDirectionEnum] = new IfcEnumerationDescriptor(Type::IfcRibPlateDirectionEnum, values); + values.clear(); values.reserve(128); + values.push_back("CO2SENSOR"); + values.push_back("FIRESENSOR"); + values.push_back("FLOWSENSOR"); + values.push_back("GASSENSOR"); + values.push_back("HEATSENSOR"); + values.push_back("HUMIDITYSENSOR"); + values.push_back("LIGHTSENSOR"); + values.push_back("MOISTURESENSOR"); + values.push_back("MOVEMENTSENSOR"); + values.push_back("PRESSURESENSOR"); + values.push_back("SMOKESENSOR"); + values.push_back("SOUNDSENSOR"); + values.push_back("TEMPERATURESENSOR"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSensorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcSensorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ELECTRICPOINTHEATER"); + values.push_back("ELECTRICCABLEHEATER"); + values.push_back("ELECTRICMATHEATER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricHeaterTypeEnum] = new IfcEnumerationDescriptor(Type::IfcElectricHeaterTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CODECOMPLIANCE"); + values.push_back("DESIGNINTENT"); + values.push_back("HEALTHANDSAFETY"); + values.push_back("REQUIREMENT"); + values.push_back("SPECIFICATION"); + values.push_back("TRIGGERCONDITION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcObjectiveEnum] = new IfcEnumerationDescriptor(Type::IfcObjectiveEnum, values); + values.clear(); values.reserve(128); + values.push_back("COLUMN"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcColumnTypeEnum] = new IfcEnumerationDescriptor(Type::IfcColumnTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("GASAPPLIANCE"); + values.push_back("GASBOOSTER"); + values.push_back("GASBURNER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcGasTerminalTypeEnum] = new IfcEnumerationDescriptor(Type::IfcGasTerminalTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcBuildingElementProxyTypeEnum] = new IfcEnumerationDescriptor(Type::IfcBuildingElementProxyTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcJunctionBoxTypeEnum] = new IfcEnumerationDescriptor(Type::IfcJunctionBoxTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("DEAD_LOAD_G"); + values.push_back("COMPLETION_G1"); + values.push_back("LIVE_LOAD_Q"); + values.push_back("SNOW_S"); + values.push_back("WIND_W"); + values.push_back("PRESTRESSING_P"); + values.push_back("SETTLEMENT_U"); + values.push_back("TEMPERATURE_T"); + values.push_back("EARTHQUAKE_E"); + values.push_back("FIRE"); + values.push_back("IMPULSE"); + values.push_back("IMPACT"); + values.push_back("TRANSPORT"); + values.push_back("ERECTION"); + values.push_back("PROPPING"); + values.push_back("SYSTEM_IMPERFECTION"); + values.push_back("SHRINKAGE"); + values.push_back("CREEP"); + values.push_back("LACK_OF_FIT"); + values.push_back("BUOYANCY"); + values.push_back("ICE"); + values.push_back("CURRENT"); + values.push_back("WAVE"); + values.push_back("RAIN"); + values.push_back("BRAKES"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcActionSourceTypeEnum] = new IfcEnumerationDescriptor(Type::IfcActionSourceTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("AMPERE"); + values.push_back("BECQUEREL"); + values.push_back("CANDELA"); + values.push_back("COULOMB"); + values.push_back("CUBIC_METRE"); + values.push_back("DEGREE_CELSIUS"); + values.push_back("FARAD"); + values.push_back("GRAM"); + values.push_back("GRAY"); + values.push_back("HENRY"); + values.push_back("HERTZ"); + values.push_back("JOULE"); + values.push_back("KELVIN"); + values.push_back("LUMEN"); + values.push_back("LUX"); + values.push_back("METRE"); + values.push_back("MOLE"); + values.push_back("NEWTON"); + values.push_back("OHM"); + values.push_back("PASCAL"); + values.push_back("RADIAN"); + values.push_back("SECOND"); + values.push_back("SIEMENS"); + values.push_back("SIEVERT"); + values.push_back("SQUARE_METRE"); + values.push_back("STERADIAN"); + values.push_back("TESLA"); + values.push_back("VOLT"); + values.push_back("WATT"); + values.push_back("WEBER"); + current_enum = enumeration_descriptor_map[Type::IfcSIUnitName] = new IfcEnumerationDescriptor(Type::IfcSIUnitName, values); + values.clear(); values.reserve(128); + values.push_back("BRACE"); + values.push_back("CHORD"); + values.push_back("COLLAR"); + values.push_back("MEMBER"); + values.push_back("MULLION"); + values.push_back("PLATE"); + values.push_back("POST"); + values.push_back("PURLIN"); + values.push_back("RAFTER"); + values.push_back("STRINGER"); + values.push_back("STRUT"); + values.push_back("STUD"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcMemberTypeEnum] = new IfcEnumerationDescriptor(Type::IfcMemberTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ALUMINIUM"); + values.push_back("HIGH_GRADE_STEEL"); + values.push_back("STEEL"); + values.push_back("WOOD"); + values.push_back("ALUMINIUM_WOOD"); + values.push_back("ALUMINIUM_PLASTIC"); + values.push_back("PLASTIC"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDoorStyleConstructionEnum] = new IfcEnumerationDescriptor(Type::IfcDoorStyleConstructionEnum, values); + values.clear(); values.reserve(128); + values.push_back("POSITIVE"); + values.push_back("NEGATIVE"); + current_enum = enumeration_descriptor_map[Type::IfcDirectionSenseEnum] = new IfcEnumerationDescriptor(Type::IfcDirectionSenseEnum, values); + values.clear(); values.reserve(128); + values.push_back("NULL"); + current_enum = enumeration_descriptor_map[Type::IfcNullStyle] = new IfcEnumerationDescriptor(Type::IfcNullStyle, values); + values.clear(); values.reserve(128); + values.push_back("STRAIGHT"); + values.push_back("SPIRAL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcRampFlightTypeEnum] = new IfcEnumerationDescriptor(Type::IfcRampFlightTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("SINGLE_PANEL"); + values.push_back("DOUBLE_PANEL_VERTICAL"); + values.push_back("DOUBLE_PANEL_HORIZONTAL"); + values.push_back("TRIPLE_PANEL_VERTICAL"); + values.push_back("TRIPLE_PANEL_BOTTOM"); + values.push_back("TRIPLE_PANEL_TOP"); + values.push_back("TRIPLE_PANEL_LEFT"); + values.push_back("TRIPLE_PANEL_RIGHT"); + values.push_back("TRIPLE_PANEL_HORIZONTAL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcWindowStyleOperationEnum] = new IfcEnumerationDescriptor(Type::IfcWindowStyleOperationEnum, values); + values.clear(); values.reserve(128); + values.push_back("UNION"); + values.push_back("INTERSECTION"); + values.push_back("DIFFERENCE"); + current_enum = enumeration_descriptor_map[Type::IfcBooleanOperator] = new IfcEnumerationDescriptor(Type::IfcBooleanOperator, values); + values.clear(); values.reserve(128); + values.push_back("BEND"); + values.push_back("CONNECTOR"); + values.push_back("ENTRY"); + values.push_back("EXIT"); + values.push_back("JUNCTION"); + values.push_back("OBSTRUCTION"); + values.push_back("TRANSITION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDuctFittingTypeEnum] = new IfcEnumerationDescriptor(Type::IfcDuctFittingTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("AED"); + values.push_back("AES"); + values.push_back("ATS"); + values.push_back("AUD"); + values.push_back("BBD"); + values.push_back("BEG"); + values.push_back("BGL"); + values.push_back("BHD"); + values.push_back("BMD"); + values.push_back("BND"); + values.push_back("BRL"); + values.push_back("BSD"); + values.push_back("BWP"); + values.push_back("BZD"); + values.push_back("CAD"); + values.push_back("CBD"); + values.push_back("CHF"); + values.push_back("CLP"); + values.push_back("CNY"); + values.push_back("CYS"); + values.push_back("CZK"); + values.push_back("DDP"); + values.push_back("DEM"); + values.push_back("DKK"); + values.push_back("EGL"); + values.push_back("EST"); + values.push_back("EUR"); + values.push_back("FAK"); + values.push_back("FIM"); + values.push_back("FJD"); + values.push_back("FKP"); + values.push_back("FRF"); + values.push_back("GBP"); + values.push_back("GIP"); + values.push_back("GMD"); + values.push_back("GRX"); + values.push_back("HKD"); + values.push_back("HUF"); + values.push_back("ICK"); + values.push_back("IDR"); + values.push_back("ILS"); + values.push_back("INR"); + values.push_back("IRP"); + values.push_back("ITL"); + values.push_back("JMD"); + values.push_back("JOD"); + values.push_back("JPY"); + values.push_back("KES"); + values.push_back("KRW"); + values.push_back("KWD"); + values.push_back("KYD"); + values.push_back("LKR"); + values.push_back("LUF"); + values.push_back("MTL"); + values.push_back("MUR"); + values.push_back("MXN"); + values.push_back("MYR"); + values.push_back("NLG"); + values.push_back("NZD"); + values.push_back("OMR"); + values.push_back("PGK"); + values.push_back("PHP"); + values.push_back("PKR"); + values.push_back("PLN"); + values.push_back("PTN"); + values.push_back("QAR"); + values.push_back("RUR"); + values.push_back("SAR"); + values.push_back("SCR"); + values.push_back("SEK"); + values.push_back("SGD"); + values.push_back("SKP"); + values.push_back("THB"); + values.push_back("TRL"); + values.push_back("TTD"); + values.push_back("TWD"); + values.push_back("USD"); + values.push_back("VEB"); + values.push_back("VND"); + values.push_back("XEU"); + values.push_back("ZAR"); + values.push_back("ZWD"); + values.push_back("NOK"); + current_enum = enumeration_descriptor_map[Type::IfcCurrencyEnum] = new IfcEnumerationDescriptor(Type::IfcCurrencyEnum, values); + values.clear(); values.reserve(128); + values.push_back("PRODUCT"); + values.push_back("PROCESS"); + values.push_back("CONTROL"); + values.push_back("RESOURCE"); + values.push_back("ACTOR"); + values.push_back("GROUP"); + values.push_back("PROJECT"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcObjectTypeEnum] = new IfcEnumerationDescriptor(Type::IfcObjectTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("SENSIBLE"); + values.push_back("LATENT"); + values.push_back("RADIANT"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcThermalLoadTypeEnum] = new IfcEnumerationDescriptor(Type::IfcThermalLoadTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("POLYLINE_FORM"); + values.push_back("CIRCULAR_ARC"); + values.push_back("ELLIPTIC_ARC"); + values.push_back("PARABOLIC_ARC"); + values.push_back("HYPERBOLIC_ARC"); + values.push_back("UNSPECIFIED"); + current_enum = enumeration_descriptor_map[Type::IfcBSplineCurveForm] = new IfcEnumerationDescriptor(Type::IfcBSplineCurveForm, values); + values.clear(); values.reserve(128); + values.push_back("COMPLEX"); + values.push_back("ELEMENT"); + values.push_back("PARTIAL"); + current_enum = enumeration_descriptor_map[Type::IfcElementCompositionEnum] = new IfcEnumerationDescriptor(Type::IfcElementCompositionEnum, values); + values.clear(); values.reserve(128); + values.push_back("GRAPH_VIEW"); + values.push_back("SKETCH_VIEW"); + values.push_back("MODEL_VIEW"); + values.push_back("PLAN_VIEW"); + values.push_back("REFLECTED_PLAN_VIEW"); + values.push_back("SECTION_VIEW"); + values.push_back("ELEVATION_VIEW"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcGeometricProjectionEnum] = new IfcEnumerationDescriptor(Type::IfcGeometricProjectionEnum, values); + values.clear(); values.reserve(128); + values.push_back("BLINN"); + values.push_back("FLAT"); + values.push_back("GLASS"); + values.push_back("MATT"); + values.push_back("METAL"); + values.push_back("MIRROR"); + values.push_back("PHONG"); + values.push_back("PLASTIC"); + values.push_back("STRAUSS"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcReflectanceMethodEnum] = new IfcEnumerationDescriptor(Type::IfcReflectanceMethodEnum, values); + values.clear(); values.reserve(128); + values.push_back("FLOOR"); + values.push_back("ROOF"); + values.push_back("LANDING"); + values.push_back("BASESLAB"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSlabTypeEnum] = new IfcEnumerationDescriptor(Type::IfcSlabTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("INTERNAL"); + values.push_back("EXTERNAL"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcInternalOrExternalEnum] = new IfcEnumerationDescriptor(Type::IfcInternalOrExternalEnum, values); + values.clear(); values.reserve(128); + values.push_back("ORIGIN"); + values.push_back("TARGET"); + current_enum = enumeration_descriptor_map[Type::IfcDimensionExtentUsage] = new IfcEnumerationDescriptor(Type::IfcDimensionExtentUsage, values); + values.clear(); values.reserve(128); + values.push_back("BEND"); + values.push_back("CONNECTOR"); + values.push_back("ENTRY"); + values.push_back("EXIT"); + values.push_back("JUNCTION"); + values.push_back("OBSTRUCTION"); + values.push_back("TRANSITION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPipeFittingTypeEnum] = new IfcEnumerationDescriptor(Type::IfcPipeFittingTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("BATH"); + values.push_back("BIDET"); + values.push_back("CISTERN"); + values.push_back("SHOWER"); + values.push_back("SINK"); + values.push_back("SANITARYFOUNTAIN"); + values.push_back("TOILETPAN"); + values.push_back("URINAL"); + values.push_back("WASHHANDBASIN"); + values.push_back("WCSEAT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSanitaryTerminalTypeEnum] = new IfcEnumerationDescriptor(Type::IfcSanitaryTerminalTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("STANDARD"); + values.push_back("POLYGONAL"); + values.push_back("SHEAR"); + values.push_back("ELEMENTEDWALL"); + values.push_back("PLUMBINGWALL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcWallTypeEnum] = new IfcEnumerationDescriptor(Type::IfcWallTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("AIRHANDLER"); + values.push_back("AIRCONDITIONINGUNIT"); + values.push_back("SPLITSYSTEM"); + values.push_back("ROOFTOPUNIT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcUnitaryEquipmentTypeEnum] = new IfcEnumerationDescriptor(Type::IfcUnitaryEquipmentTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ADVICE_CAUTION"); + values.push_back("ADVICE_NOTE"); + values.push_back("ADVICE_WARNING"); + values.push_back("CALIBRATION"); + values.push_back("DIAGNOSTIC"); + values.push_back("SHUTDOWN"); + values.push_back("STARTUP"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcProcedureTypeEnum] = new IfcEnumerationDescriptor(Type::IfcProcedureTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FORMEDDUCT"); + values.push_back("INSPECTIONCHAMBER"); + values.push_back("INSPECTIONPIT"); + values.push_back("MANHOLE"); + values.push_back("METERCHAMBER"); + values.push_back("SUMP"); + values.push_back("TRENCH"); + values.push_back("VALVECHAMBER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDistributionChamberElementTypeEnum] = new IfcEnumerationDescriptor(Type::IfcDistributionChamberElementTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("LEFT"); + values.push_back("RIGHT"); + values.push_back("UP"); + values.push_back("DOWN"); + current_enum = enumeration_descriptor_map[Type::IfcTextPath] = new IfcEnumerationDescriptor(Type::IfcTextPath, values); + values.clear(); values.reserve(128); + values.push_back("BUDGET"); + values.push_back("COSTPLAN"); + values.push_back("ESTIMATE"); + values.push_back("TENDER"); + values.push_back("PRICEDBILLOFQUANTITIES"); + values.push_back("UNPRICEDBILLOFQUANTITIES"); + values.push_back("SCHEDULEOFRATES"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCostScheduleTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCostScheduleTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CENTRIFUGALFORWARDCURVED"); + values.push_back("CENTRIFUGALRADIAL"); + values.push_back("CENTRIFUGALBACKWARDINCLINEDCURVED"); + values.push_back("CENTRIFUGALAIRFOIL"); + values.push_back("TUBEAXIAL"); + values.push_back("VANEAXIAL"); + values.push_back("PROPELLORAXIAL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcFanTypeEnum] = new IfcEnumerationDescriptor(Type::IfcFanTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("AHEAD"); + values.push_back("BEHIND"); + current_enum = enumeration_descriptor_map[Type::IfcAheadOrBehind] = new IfcEnumerationDescriptor(Type::IfcAheadOrBehind, values); + values.clear(); values.reserve(128); + values.push_back("ACTIVE"); + values.push_back("PASSIVE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCooledBeamTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCooledBeamTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("BREECHINGINLET"); + values.push_back("FIREHYDRANT"); + values.push_back("HOSEREEL"); + values.push_back("SPRINKLER"); + values.push_back("SPRINKLERDEFLECTOR"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcFireSuppressionTerminalTypeEnum] = new IfcEnumerationDescriptor(Type::IfcFireSuppressionTerminalTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("PUBLIC"); + values.push_back("RESTRICTED"); + values.push_back("CONFIDENTIAL"); + values.push_back("PERSONAL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDocumentConfidentialityEnum] = new IfcEnumerationDescriptor(Type::IfcDocumentConfidentialityEnum, values); + values.clear(); values.reserve(128); + values.push_back("CONSTANTFLOW"); + values.push_back("VARIABLEFLOWPRESSUREDEPENDANT"); + values.push_back("VARIABLEFLOWPRESSUREINDEPENDANT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAirTerminalBoxTypeEnum] = new IfcEnumerationDescriptor(Type::IfcAirTerminalBoxTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ANGULARVELOCITYUNIT"); + values.push_back("COMPOUNDPLANEANGLEUNIT"); + values.push_back("DYNAMICVISCOSITYUNIT"); + values.push_back("HEATFLUXDENSITYUNIT"); + values.push_back("INTEGERCOUNTRATEUNIT"); + values.push_back("ISOTHERMALMOISTURECAPACITYUNIT"); + values.push_back("KINEMATICVISCOSITYUNIT"); + values.push_back("LINEARVELOCITYUNIT"); + values.push_back("MASSDENSITYUNIT"); + values.push_back("MASSFLOWRATEUNIT"); + values.push_back("MOISTUREDIFFUSIVITYUNIT"); + values.push_back("MOLECULARWEIGHTUNIT"); + values.push_back("SPECIFICHEATCAPACITYUNIT"); + values.push_back("THERMALADMITTANCEUNIT"); + values.push_back("THERMALCONDUCTANCEUNIT"); + values.push_back("THERMALRESISTANCEUNIT"); + values.push_back("THERMALTRANSMITTANCEUNIT"); + values.push_back("VAPORPERMEABILITYUNIT"); + values.push_back("VOLUMETRICFLOWRATEUNIT"); + values.push_back("ROTATIONALFREQUENCYUNIT"); + values.push_back("TORQUEUNIT"); + values.push_back("MOMENTOFINERTIAUNIT"); + values.push_back("LINEARMOMENTUNIT"); + values.push_back("LINEARFORCEUNIT"); + values.push_back("PLANARFORCEUNIT"); + values.push_back("MODULUSOFELASTICITYUNIT"); + values.push_back("SHEARMODULUSUNIT"); + values.push_back("LINEARSTIFFNESSUNIT"); + values.push_back("ROTATIONALSTIFFNESSUNIT"); + values.push_back("MODULUSOFSUBGRADEREACTIONUNIT"); + values.push_back("ACCELERATIONUNIT"); + values.push_back("CURVATUREUNIT"); + values.push_back("HEATINGVALUEUNIT"); + values.push_back("IONCONCENTRATIONUNIT"); + values.push_back("LUMINOUSINTENSITYDISTRIBUTIONUNIT"); + values.push_back("MASSPERLENGTHUNIT"); + values.push_back("MODULUSOFLINEARSUBGRADEREACTIONUNIT"); + values.push_back("MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"); + values.push_back("PHUNIT"); + values.push_back("ROTATIONALMASSUNIT"); + values.push_back("SECTIONAREAINTEGRALUNIT"); + values.push_back("SECTIONMODULUSUNIT"); + values.push_back("SOUNDPOWERUNIT"); + values.push_back("SOUNDPRESSUREUNIT"); + values.push_back("TEMPERATUREGRADIENTUNIT"); + values.push_back("THERMALEXPANSIONCOEFFICIENTUNIT"); + values.push_back("WARPINGCONSTANTUNIT"); + values.push_back("WARPINGMOMENTUNIT"); + values.push_back("USERDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDerivedUnitEnum] = new IfcEnumerationDescriptor(Type::IfcDerivedUnitEnum, values); + values.clear(); values.reserve(128); + values.push_back("COMPACTFLUORESCENT"); + values.push_back("FLUORESCENT"); + values.push_back("HIGHPRESSUREMERCURY"); + values.push_back("HIGHPRESSURESODIUM"); + values.push_back("LIGHTEMITTINGDIODE"); + values.push_back("LOWPRESSURESODIUM"); + values.push_back("LOWVOLTAGEHALOGEN"); + values.push_back("MAINVOLTAGEHALOGEN"); + values.push_back("METALHALIDE"); + values.push_back("TUNGSTENFILAMENT"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcLightEmissionSourceEnum] = new IfcEnumerationDescriptor(Type::IfcLightEmissionSourceEnum, values); + values.clear(); values.reserve(128); + values.push_back("BEND"); + values.push_back("CROSS"); + values.push_back("REDUCER"); + values.push_back("TEE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCableCarrierFittingTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCableCarrierFittingTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CIRCULATOR"); + values.push_back("ENDSUCTION"); + values.push_back("SPLITCASE"); + values.push_back("VERTICALINLINE"); + values.push_back("VERTICALTURBINE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPumpTypeEnum] = new IfcEnumerationDescriptor(Type::IfcPumpTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CHANGE"); + values.push_back("MAINTENANCE"); + values.push_back("MOVE"); + values.push_back("PURCHASE"); + values.push_back("WORK"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcProjectOrderRecordTypeEnum] = new IfcEnumerationDescriptor(Type::IfcProjectOrderRecordTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ALUMINIUM"); + values.push_back("HIGH_GRADE_STEEL"); + values.push_back("STEEL"); + values.push_back("WOOD"); + values.push_back("ALUMINIUM_WOOD"); + values.push_back("PLASTIC"); + values.push_back("OTHER_CONSTRUCTION"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcWindowStyleConstructionEnum] = new IfcEnumerationDescriptor(Type::IfcWindowStyleConstructionEnum, values); + values.clear(); values.reserve(128); + values.push_back("CABLESEGMENT"); + values.push_back("CONDUCTORSEGMENT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCableSegmentTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCableSegmentTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FLOORTRAP"); + values.push_back("FLOORWASTE"); + values.push_back("GULLYSUMP"); + values.push_back("GULLYTRAP"); + values.push_back("GREASEINTERCEPTOR"); + values.push_back("OILINTERCEPTOR"); + values.push_back("PETROLINTERCEPTOR"); + values.push_back("ROOFDRAIN"); + values.push_back("WASTEDISPOSALUNIT"); + values.push_back("WASTETRAP"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcWasteTerminalTypeEnum] = new IfcEnumerationDescriptor(Type::IfcWasteTerminalTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FLAT_ROOF"); + values.push_back("SHED_ROOF"); + values.push_back("GABLE_ROOF"); + values.push_back("HIP_ROOF"); + values.push_back("HIPPED_GABLE_ROOF"); + values.push_back("GAMBREL_ROOF"); + values.push_back("MANSARD_ROOF"); + values.push_back("BARREL_ROOF"); + values.push_back("RAINBOW_ROOF"); + values.push_back("BUTTERFLY_ROOF"); + values.push_back("PAVILION_ROOF"); + values.push_back("DOME_ROOF"); + values.push_back("FREEFORM"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcRoofTypeEnum] = new IfcEnumerationDescriptor(Type::IfcRoofTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("SUPPLIER"); + values.push_back("MANUFACTURER"); + values.push_back("CONTRACTOR"); + values.push_back("SUBCONTRACTOR"); + values.push_back("ARCHITECT"); + values.push_back("STRUCTURALENGINEER"); + values.push_back("COSTENGINEER"); + values.push_back("CLIENT"); + values.push_back("BUILDINGOWNER"); + values.push_back("BUILDINGOPERATOR"); + values.push_back("MECHANICALENGINEER"); + values.push_back("ELECTRICALENGINEER"); + values.push_back("PROJECTMANAGER"); + values.push_back("FACILITIESMANAGER"); + values.push_back("CIVILENGINEER"); + values.push_back("COMISSIONINGENGINEER"); + values.push_back("ENGINEER"); + values.push_back("OWNER"); + values.push_back("CONSULTANT"); + values.push_back("CONSTRUCTIONMANAGER"); + values.push_back("FIELDCONSTRUCTIONMANAGER"); + values.push_back("RESELLER"); + values.push_back("USERDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcRoleEnum] = new IfcEnumerationDescriptor(Type::IfcRoleEnum, values); + values.clear(); values.reserve(128); + values.push_back("COHESION"); + values.push_back("FRICTION"); + values.push_back("SUPPORT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPileTypeEnum] = new IfcEnumerationDescriptor(Type::IfcPileTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ALTERNATING"); + values.push_back("DIRECT"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricCurrentEnum] = new IfcEnumerationDescriptor(Type::IfcElectricCurrentEnum, values); + values.clear(); values.reserve(128); + values.push_back("AIRPARTICLEFILTER"); + values.push_back("ODORFILTER"); + values.push_back("OILFILTER"); + values.push_back("STRAINER"); + values.push_back("WATERFILTER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcFilterTypeEnum] = new IfcEnumerationDescriptor(Type::IfcFilterTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CURRENT"); + values.push_back("FREQUENCY"); + values.push_back("VOLTAGE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcTransformerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcTransformerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("POSITIVE"); + values.push_back("NEGATIVE"); + values.push_back("BOTH"); + current_enum = enumeration_descriptor_map[Type::IfcSurfaceSide] = new IfcEnumerationDescriptor(Type::IfcSurfaceSide, values); + values.clear(); values.reserve(128); + values.push_back("SECTIONALRADIATOR"); + values.push_back("PANELRADIATOR"); + values.push_back("TUBULARRADIATOR"); + values.push_back("CONVECTOR"); + values.push_back("BASEBOARDHEATER"); + values.push_back("FINNEDTUBEUNIT"); + values.push_back("UNITHEATER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSpaceHeaterTypeEnum] = new IfcEnumerationDescriptor(Type::IfcSpaceHeaterTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FINNED"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcTubeBundleTypeEnum] = new IfcEnumerationDescriptor(Type::IfcTubeBundleTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("POINTSOURCE"); + values.push_back("DIRECTIONSOURCE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcLightFixtureTypeEnum] = new IfcEnumerationDescriptor(Type::IfcLightFixtureTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("GLOBAL_COORDS"); + values.push_back("LOCAL_COORDS"); + current_enum = enumeration_descriptor_map[Type::IfcGlobalOrLocalEnum] = new IfcEnumerationDescriptor(Type::IfcGlobalOrLocalEnum, values); + values.clear(); values.reserve(128); + values.push_back("AUDIOVISUALOUTLET"); + values.push_back("COMMUNICATIONSOUTLET"); + values.push_back("POWEROUTLET"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcOutletTypeEnum] = new IfcEnumerationDescriptor(Type::IfcOutletTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ACTUAL"); + values.push_back("BASELINE"); + values.push_back("PLANNED"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcWorkControlTypeEnum] = new IfcEnumerationDescriptor(Type::IfcWorkControlTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("PRIMARY"); + values.push_back("SECONDARY"); + values.push_back("TERTIARY"); + values.push_back("AUXILIARY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcEnergySequenceEnum] = new IfcEnumerationDescriptor(Type::IfcEnergySequenceEnum, values); + values.clear(); values.reserve(128); + values.push_back("COMPRESSION"); + values.push_back("SPRING"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcVibrationIsolatorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcVibrationIsolatorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("PREFORMED"); + values.push_back("SECTIONAL"); + values.push_back("EXPANSION"); + values.push_back("PRESSUREVESSEL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcTankTypeEnum] = new IfcEnumerationDescriptor(Type::IfcTankTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CONTINUOUS"); + values.push_back("DISCRETE"); + values.push_back("DISCRETEBINARY"); + values.push_back("PIECEWISEBINARY"); + values.push_back("PIECEWISECONSTANT"); + values.push_back("PIECEWISECONTINUOUS"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcTimeSeriesDataTypeEnum] = new IfcEnumerationDescriptor(Type::IfcTimeSeriesDataTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("BUMP"); + values.push_back("OPACITY"); + values.push_back("REFLECTION"); + values.push_back("SELFILLUMINATION"); + values.push_back("SHININESS"); + values.push_back("SPECULAR"); + values.push_back("TEXTURE"); + values.push_back("TRANSPARENCYMAP"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSurfaceTextureEnum] = new IfcEnumerationDescriptor(Type::IfcSurfaceTextureEnum, values); + values.clear(); values.reserve(128); + values.push_back("OFFICE"); + values.push_back("SITE"); + values.push_back("HOME"); + values.push_back("DISTRIBUTIONPOINT"); + values.push_back("USERDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAddressTypeEnum] = new IfcEnumerationDescriptor(Type::IfcAddressTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("AIRCOOLED"); + values.push_back("WATERCOOLED"); + values.push_back("HEATRECOVERY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcChillerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcChillerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("TYPE_A"); + values.push_back("TYPE_B"); + values.push_back("TYPE_C"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcLightDistributionCurveEnum] = new IfcEnumerationDescriptor(Type::IfcLightDistributionCurveEnum, values); + values.clear(); values.reserve(128); + values.push_back("MAIN"); + values.push_back("SHEAR"); + values.push_back("LIGATURE"); + values.push_back("STUD"); + values.push_back("PUNCHING"); + values.push_back("EDGE"); + values.push_back("RING"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcReinforcingBarRoleEnum] = new IfcEnumerationDescriptor(Type::IfcReinforcingBarRoleEnum, values); + values.clear(); values.reserve(128); + values.push_back("CONSUMED"); + values.push_back("PARTIALLYCONSUMED"); + values.push_back("NOTCONSUMED"); + values.push_back("OCCUPIED"); + values.push_back("PARTIALLYOCCUPIED"); + values.push_back("NOTOCCUPIED"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcResourceConsumptionEnum] = new IfcEnumerationDescriptor(Type::IfcResourceConsumptionEnum, values); + values.clear(); values.reserve(128); + values.push_back("DIRECTEXPANSIONSHELLANDTUBE"); + values.push_back("DIRECTEXPANSIONTUBEINTUBE"); + values.push_back("DIRECTEXPANSIONBRAZEDPLATE"); + values.push_back("FLOODEDSHELLANDTUBE"); + values.push_back("SHELLANDCOIL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcEvaporatorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcEvaporatorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ANNUAL"); + values.push_back("MONTHLY"); + values.push_back("WEEKLY"); + values.push_back("DAILY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcTimeSeriesScheduleTypeEnum] = new IfcEnumerationDescriptor(Type::IfcTimeSeriesScheduleTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("DC"); + values.push_back("INDUCTION"); + values.push_back("POLYPHASE"); + values.push_back("RELUCTANCESYNCHRONOUS"); + values.push_back("SYNCHRONOUS"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricMotorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcElectricMotorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("SWINGING"); + values.push_back("DOUBLE_ACTING"); + values.push_back("SLIDING"); + values.push_back("FOLDING"); + values.push_back("REVOLVING"); + values.push_back("ROLLINGUP"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDoorPanelOperationEnum] = new IfcEnumerationDescriptor(Type::IfcDoorPanelOperationEnum, values); + values.clear(); values.reserve(128); + values.push_back("SIDEHUNGRIGHTHAND"); + values.push_back("SIDEHUNGLEFTHAND"); + values.push_back("TILTANDTURNRIGHTHAND"); + values.push_back("TILTANDTURNLEFTHAND"); + values.push_back("TOPHUNG"); + values.push_back("BOTTOMHUNG"); + values.push_back("PIVOTHORIZONTAL"); + values.push_back("PIVOTVERTICAL"); + values.push_back("SLIDINGHORIZONTAL"); + values.push_back("SLIDINGVERTICAL"); + values.push_back("REMOVABLECASEMENT"); + values.push_back("FIXEDCASEMENT"); + values.push_back("OTHEROPERATION"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcWindowPanelOperationEnum] = new IfcEnumerationDescriptor(Type::IfcWindowPanelOperationEnum, values); + values.clear(); values.reserve(128); + values.push_back("MEASURED"); + values.push_back("PREDICTED"); + values.push_back("SIMULATED"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDataOriginEnum] = new IfcEnumerationDescriptor(Type::IfcDataOriginEnum, values); + values.clear(); values.reserve(128); + values.push_back("STRAIGHT_RUN_STAIR"); + values.push_back("TWO_STRAIGHT_RUN_STAIR"); + values.push_back("QUARTER_WINDING_STAIR"); + values.push_back("QUARTER_TURN_STAIR"); + values.push_back("HALF_WINDING_STAIR"); + values.push_back("HALF_TURN_STAIR"); + values.push_back("TWO_QUARTER_WINDING_STAIR"); + values.push_back("TWO_QUARTER_TURN_STAIR"); + values.push_back("THREE_QUARTER_WINDING_STAIR"); + values.push_back("THREE_QUARTER_TURN_STAIR"); + values.push_back("SPIRAL_STAIR"); + values.push_back("DOUBLE_RETURN_STAIR"); + values.push_back("CURVED_RUN_STAIR"); + values.push_back("TWO_CURVED_RUN_STAIR"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcStairTypeEnum] = new IfcEnumerationDescriptor(Type::IfcStairTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("HANDRAIL"); + values.push_back("GUARDRAIL"); + values.push_back("BALUSTRADE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcRailingTypeEnum] = new IfcEnumerationDescriptor(Type::IfcRailingTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("BIRDCAGE"); + values.push_back("COWL"); + values.push_back("RAINWATERHOPPER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcStackTerminalTypeEnum] = new IfcEnumerationDescriptor(Type::IfcStackTerminalTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("AIRRELEASE"); + values.push_back("ANTIVACUUM"); + values.push_back("CHANGEOVER"); + values.push_back("CHECK"); + values.push_back("COMMISSIONING"); + values.push_back("DIVERTING"); + values.push_back("DRAWOFFCOCK"); + values.push_back("DOUBLECHECK"); + values.push_back("DOUBLEREGULATING"); + values.push_back("FAUCET"); + values.push_back("FLUSHING"); + values.push_back("GASCOCK"); + values.push_back("GASTAP"); + values.push_back("ISOLATING"); + values.push_back("MIXING"); + values.push_back("PRESSUREREDUCING"); + values.push_back("PRESSURERELIEF"); + values.push_back("REGULATING"); + values.push_back("SAFETYCUTOFF"); + values.push_back("STEAMTRAP"); + values.push_back("STOPCOCK"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcValveTypeEnum] = new IfcEnumerationDescriptor(Type::IfcValveTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("LEFT"); + values.push_back("MIDDLE"); + values.push_back("RIGHT"); + values.push_back("BOTTOM"); + values.push_back("TOP"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcWindowPanelPositionEnum] = new IfcEnumerationDescriptor(Type::IfcWindowPanelPositionEnum, values); + values.clear(); values.reserve(128); + values.push_back("DESIGN"); + values.push_back("DESIGNMAXIMUM"); + values.push_back("DESIGNMINIMUM"); + values.push_back("SIMULATED"); + values.push_back("ASBUILT"); + values.push_back("COMMISSIONING"); + values.push_back("MEASURED"); + values.push_back("USERDEFINED"); + values.push_back("NOTKNOWN"); + current_enum = enumeration_descriptor_map[Type::IfcPropertySourceEnum] = new IfcEnumerationDescriptor(Type::IfcPropertySourceEnum, values); + values.clear(); values.reserve(128); + values.push_back("CABLELADDERSEGMENT"); + values.push_back("CABLETRAYSEGMENT"); + values.push_back("CABLETRUNKINGSEGMENT"); + values.push_back("CONDUITSEGMENT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCableCarrierSegmentTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCableCarrierSegmentTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("PHYSICAL"); + values.push_back("VIRTUAL"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPhysicalOrVirtualEnum] = new IfcEnumerationDescriptor(Type::IfcPhysicalOrVirtualEnum, values); + values.clear(); values.reserve(128); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSpaceTypeEnum] = new IfcEnumerationDescriptor(Type::IfcSpaceTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"); + values.push_back("DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"); + values.push_back("DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"); + values.push_back("DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"); + values.push_back("DIRECTEVAPORATIVEAIRWASHER"); + values.push_back("INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"); + values.push_back("INDIRECTEVAPORATIVEWETCOIL"); + values.push_back("INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"); + values.push_back("INDIRECTDIRECTCOMBINATION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcEvaporativeCoolerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcEvaporativeCoolerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("PLATE"); + values.push_back("SHELLANDTUBE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcHeatExchangerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcHeatExchangerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FUSEDISCONNECTOR"); + values.push_back("CIRCUITBREAKER"); + values.push_back("EARTHFAILUREDEVICE"); + values.push_back("RESIDUALCURRENTCIRCUITBREAKER"); + values.push_back("RESIDUALCURRENTSWITCH"); + values.push_back("VARISTOR"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcProtectiveDeviceTypeEnum] = new IfcEnumerationDescriptor(Type::IfcProtectiveDeviceTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CONTROLDAMPER"); + values.push_back("FIREDAMPER"); + values.push_back("SMOKEDAMPER"); + values.push_back("FIRESMOKEDAMPER"); + values.push_back("BACKDRAFTDAMPER"); + values.push_back("RELIEFDAMPER"); + values.push_back("BLASTDAMPER"); + values.push_back("GRAVITYDAMPER"); + values.push_back("GRAVITYRELIEFDAMPER"); + values.push_back("BALANCINGDAMPER"); + values.push_back("FUMEHOODEXHAUST"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDamperTypeEnum] = new IfcEnumerationDescriptor(Type::IfcDamperTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FLOATING"); + values.push_back("PROPORTIONAL"); + values.push_back("PROPORTIONALINTEGRAL"); + values.push_back("PROPORTIONALINTEGRALDERIVATIVE"); + values.push_back("TIMEDTWOPOSITION"); + values.push_back("TWOPOSITION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcControllerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcControllerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("SITE"); + values.push_back("FACTORY"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAssemblyPlaceEnum] = new IfcEnumerationDescriptor(Type::IfcAssemblyPlaceEnum, values); + values.clear(); values.reserve(128); + values.push_back("A_QUALITYOFCOMPONENTS"); + values.push_back("B_DESIGNLEVEL"); + values.push_back("C_WORKEXECUTIONLEVEL"); + values.push_back("D_INDOORENVIRONMENT"); + values.push_back("E_OUTDOORENVIRONMENT"); + values.push_back("F_INUSECONDITIONS"); + values.push_back("G_MAINTENANCELEVEL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcServiceLifeFactorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcServiceLifeFactorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("BEAM"); + values.push_back("JOIST"); + values.push_back("LINTEL"); + values.push_back("T_BEAM"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcBeamTypeEnum] = new IfcEnumerationDescriptor(Type::IfcBeamTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("READWRITE"); + values.push_back("READONLY"); + values.push_back("LOCKED"); + values.push_back("READWRITELOCKED"); + values.push_back("READONLYLOCKED"); + current_enum = enumeration_descriptor_map[Type::IfcStateEnum] = new IfcEnumerationDescriptor(Type::IfcStateEnum, values); + values.clear(); values.reserve(128); + values.push_back("UNIFORM"); + values.push_back("TAPERED"); + current_enum = enumeration_descriptor_map[Type::IfcSectionTypeEnum] = new IfcEnumerationDescriptor(Type::IfcSectionTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FOOTING_BEAM"); + values.push_back("PAD_FOOTING"); + values.push_back("PILE_CAP"); + values.push_back("STRIP_FOOTING"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcFootingTypeEnum] = new IfcEnumerationDescriptor(Type::IfcFootingTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("LOAD_GROUP"); + values.push_back("LOAD_CASE"); + values.push_back("LOAD_COMBINATION_GROUP"); + values.push_back("LOAD_COMBINATION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcLoadGroupTypeEnum] = new IfcEnumerationDescriptor(Type::IfcLoadGroupTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricGeneratorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcElectricGeneratorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ELECTRICMETER"); + values.push_back("ENERGYMETER"); + values.push_back("FLOWMETER"); + values.push_back("GASMETER"); + values.push_back("OILMETER"); + values.push_back("WATERMETER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcFlowMeterTypeEnum] = new IfcEnumerationDescriptor(Type::IfcFlowMeterTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("IN_PLANE_LOADING_2D"); + values.push_back("OUT_PLANE_LOADING_2D"); + values.push_back("LOADING_3D"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAnalysisModelTypeEnum] = new IfcEnumerationDescriptor(Type::IfcAnalysisModelTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCurtainWallTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCurtainWallTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("LEFT"); + values.push_back("MIDDLE"); + values.push_back("RIGHT"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDoorPanelPositionEnum] = new IfcEnumerationDescriptor(Type::IfcDoorPanelPositionEnum, values); + values.clear(); values.reserve(128); + values.push_back("CURTAIN_PANEL"); + values.push_back("SHEET"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPlateTypeEnum] = new IfcEnumerationDescriptor(Type::IfcPlateTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("BENDING_ELEMENT"); + values.push_back("MEMBRANE_ELEMENT"); + values.push_back("SHELL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcStructuralSurfaceTypeEnum] = new IfcEnumerationDescriptor(Type::IfcStructuralSurfaceTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FIXEDPLATECOUNTERFLOWEXCHANGER"); + values.push_back("FIXEDPLATECROSSFLOWEXCHANGER"); + values.push_back("FIXEDPLATEPARALLELFLOWEXCHANGER"); + values.push_back("ROTARYWHEEL"); + values.push_back("RUNAROUNDCOILLOOP"); + values.push_back("HEATPIPE"); + values.push_back("TWINTOWERENTHALPYRECOVERYLOOPS"); + values.push_back("THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"); + values.push_back("THERMOSIPHONCOILTYPEHEATEXCHANGERS"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAirToAirHeatRecoveryTypeEnum] = new IfcEnumerationDescriptor(Type::IfcAirToAirHeatRecoveryTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("DRAFT"); + values.push_back("FINALDRAFT"); + values.push_back("FINAL"); + values.push_back("REVISION"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDocumentStatusEnum] = new IfcEnumerationDescriptor(Type::IfcDocumentStatusEnum, values); + values.clear(); values.reserve(128); + values.push_back("STRAIGHT_RUN_RAMP"); + values.push_back("TWO_STRAIGHT_RUN_RAMP"); + values.push_back("QUARTER_TURN_RAMP"); + values.push_back("TWO_QUARTER_TURN_RAMP"); + values.push_back("HALF_TURN_RAMP"); + values.push_back("SPIRAL_RAMP"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcRampTypeEnum] = new IfcEnumerationDescriptor(Type::IfcRampTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ATPATH"); + values.push_back("ATSTART"); + values.push_back("ATEND"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcConnectionTypeEnum] = new IfcEnumerationDescriptor(Type::IfcConnectionTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("NATURALDRAFT"); + values.push_back("MECHANICALINDUCEDDRAFT"); + values.push_back("MECHANICALFORCEDDRAFT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCoolingTowerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCoolingTowerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CONTACTOR"); + values.push_back("EMERGENCYSTOP"); + values.push_back("STARTER"); + values.push_back("SWITCHDISCONNECTOR"); + values.push_back("TOGGLESWITCH"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSwitchingDeviceTypeEnum] = new IfcEnumerationDescriptor(Type::IfcSwitchingDeviceTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("SOURCE"); + values.push_back("SINK"); + values.push_back("SOURCEANDSINK"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcFlowDirectionEnum] = new IfcEnumerationDescriptor(Type::IfcFlowDirectionEnum, values); + values.clear(); values.reserve(128); + values.push_back("PEOPLE"); + values.push_back("LIGHTING"); + values.push_back("EQUIPMENT"); + values.push_back("VENTILATIONINDOORAIR"); + values.push_back("VENTILATIONOUTSIDEAIR"); + values.push_back("RECIRCULATEDAIR"); + values.push_back("EXHAUSTAIR"); + values.push_back("AIREXCHANGERATE"); + values.push_back("DRYBULBTEMPERATURE"); + values.push_back("RELATIVEHUMIDITY"); + values.push_back("INFILTRATION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcThermalLoadSourceEnum] = new IfcEnumerationDescriptor(Type::IfcThermalLoadSourceEnum, values); + values.clear(); values.reserve(128); + values.push_back("FIRST_ORDER_THEORY"); + values.push_back("SECOND_ORDER_THEORY"); + values.push_back("THIRD_ORDER_THEORY"); + values.push_back("FULL_NONLINEAR_THEORY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAnalysisTheoryTypeEnum] = new IfcEnumerationDescriptor(Type::IfcAnalysisTheoryTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("STRAND"); + values.push_back("WIRE"); + values.push_back("BAR"); + values.push_back("COATED"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcTendonTypeEnum] = new IfcEnumerationDescriptor(Type::IfcTendonTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ALARMPANEL"); + values.push_back("CONSUMERUNIT"); + values.push_back("CONTROLPANEL"); + values.push_back("DISTRIBUTIONBOARD"); + values.push_back("GASDETECTORPANEL"); + values.push_back("INDICATORPANEL"); + values.push_back("MIMICPANEL"); + values.push_back("MOTORCONTROLCENTRE"); + values.push_back("SWITCHBOARD"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricDistributionPointFunctionEnum] = new IfcEnumerationDescriptor(Type::IfcElectricDistributionPointFunctionEnum, values); + values.clear(); values.reserve(128); + values.push_back("PERMANENT_G"); + values.push_back("VARIABLE_Q"); + values.push_back("EXTRAORDINARY_A"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcActionTypeEnum] = new IfcEnumerationDescriptor(Type::IfcActionTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("PLAIN"); + values.push_back("TEXTURED"); + current_enum = enumeration_descriptor_map[Type::IfcReinforcingBarSurfaceEnum] = new IfcEnumerationDescriptor(Type::IfcReinforcingBarSurfaceEnum, values); + values.clear(); values.reserve(128); + values.push_back("STEAMINJECTION"); + values.push_back("ADIABATICAIRWASHER"); + values.push_back("ADIABATICPAN"); + values.push_back("ADIABATICWETTEDELEMENT"); + values.push_back("ADIABATICATOMIZING"); + values.push_back("ADIABATICULTRASONIC"); + values.push_back("ADIABATICRIGIDMEDIA"); + values.push_back("ADIABATICCOMPRESSEDAIRNOZZLE"); + values.push_back("ASSISTEDELECTRIC"); + values.push_back("ASSISTEDNATURALGAS"); + values.push_back("ASSISTEDPROPANE"); + values.push_back("ASSISTEDBUTANE"); + values.push_back("ASSISTEDSTEAM"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcHumidifierTypeEnum] = new IfcEnumerationDescriptor(Type::IfcHumidifierTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("AXIS1"); + values.push_back("AXIS2"); + values.push_back("AXIS3"); + current_enum = enumeration_descriptor_map[Type::IfcLayerSetDirectionEnum] = new IfcEnumerationDescriptor(Type::IfcLayerSetDirectionEnum, values); + values.clear(); values.reserve(128); + values.push_back("WATER"); + values.push_back("STEAM"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcBoilerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcBoilerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("BATTERY"); + values.push_back("CAPACITORBANK"); + values.push_back("HARMONICFILTER"); + values.push_back("INDUCTORBANK"); + values.push_back("UPS"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricFlowStorageDeviceTypeEnum] = new IfcEnumerationDescriptor(Type::IfcElectricFlowStorageDeviceTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ABSORBEDDOSEUNIT"); + values.push_back("AMOUNTOFSUBSTANCEUNIT"); + values.push_back("AREAUNIT"); + values.push_back("DOSEEQUIVALENTUNIT"); + values.push_back("ELECTRICCAPACITANCEUNIT"); + values.push_back("ELECTRICCHARGEUNIT"); + values.push_back("ELECTRICCONDUCTANCEUNIT"); + values.push_back("ELECTRICCURRENTUNIT"); + values.push_back("ELECTRICRESISTANCEUNIT"); + values.push_back("ELECTRICVOLTAGEUNIT"); + values.push_back("ENERGYUNIT"); + values.push_back("FORCEUNIT"); + values.push_back("FREQUENCYUNIT"); + values.push_back("ILLUMINANCEUNIT"); + values.push_back("INDUCTANCEUNIT"); + values.push_back("LENGTHUNIT"); + values.push_back("LUMINOUSFLUXUNIT"); + values.push_back("LUMINOUSINTENSITYUNIT"); + values.push_back("MAGNETICFLUXDENSITYUNIT"); + values.push_back("MAGNETICFLUXUNIT"); + values.push_back("MASSUNIT"); + values.push_back("PLANEANGLEUNIT"); + values.push_back("POWERUNIT"); + values.push_back("PRESSUREUNIT"); + values.push_back("RADIOACTIVITYUNIT"); + values.push_back("SOLIDANGLEUNIT"); + values.push_back("THERMODYNAMICTEMPERATUREUNIT"); + values.push_back("TIMEUNIT"); + values.push_back("VOLUMEUNIT"); + values.push_back("USERDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcUnitEnum] = new IfcEnumerationDescriptor(Type::IfcUnitEnum, values); + values.clear(); values.reserve(128); + values.push_back("ASSETINVENTORY"); + values.push_back("SPACEINVENTORY"); + values.push_back("FURNITUREINVENTORY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcInventoryTypeEnum] = new IfcEnumerationDescriptor(Type::IfcInventoryTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ACCESSORY_ASSEMBLY"); + values.push_back("ARCH"); + values.push_back("BEAM_GRID"); + values.push_back("BRACED_FRAME"); + values.push_back("GIRDER"); + values.push_back("REINFORCEMENT_UNIT"); + values.push_back("RIGID_FRAME"); + values.push_back("SLAB_FIELD"); + values.push_back("TRUSS"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElementAssemblyTypeEnum] = new IfcEnumerationDescriptor(Type::IfcElementAssemblyTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ACTUALSERVICELIFE"); + values.push_back("EXPECTEDSERVICELIFE"); + values.push_back("OPTIMISTICREFERENCESERVICELIFE"); + values.push_back("PESSIMISTICREFERENCESERVICELIFE"); + values.push_back("REFERENCESERVICELIFE"); + current_enum = enumeration_descriptor_map[Type::IfcServiceLifeTypeEnum] = new IfcEnumerationDescriptor(Type::IfcServiceLifeTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CEILING"); + values.push_back("FLOORING"); + values.push_back("CLADDING"); + values.push_back("ROOFING"); + values.push_back("INSULATION"); + values.push_back("MEMBRANE"); + values.push_back("SLEEVING"); + values.push_back("WRAPPING"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCoveringTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCoveringTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("STRAIGHT"); + values.push_back("WINDER"); + values.push_back("SPIRAL"); + values.push_back("CURVED"); + values.push_back("FREEFORM"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcStairFlightTypeEnum] = new IfcEnumerationDescriptor(Type::IfcStairFlightTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("EXA"); + values.push_back("PETA"); + values.push_back("TERA"); + values.push_back("GIGA"); + values.push_back("MEGA"); + values.push_back("KILO"); + values.push_back("HECTO"); + values.push_back("DECA"); + values.push_back("DECI"); + values.push_back("CENTI"); + values.push_back("MILLI"); + values.push_back("MICRO"); + values.push_back("NANO"); + values.push_back("PICO"); + values.push_back("FEMTO"); + values.push_back("ATTO"); + current_enum = enumeration_descriptor_map[Type::IfcSIPrefix] = new IfcEnumerationDescriptor(Type::IfcSIPrefix, values); + values.clear(); values.reserve(128); + values.push_back("PRESSUREGAUGE"); + values.push_back("THERMOMETER"); + values.push_back("AMMETER"); + values.push_back("FREQUENCYMETER"); + values.push_back("POWERFACTORMETER"); + values.push_back("PHASEANGLEMETER"); + values.push_back("VOLTMETER_PEAK"); + values.push_back("VOLTMETER_RMS"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcFlowInstrumentTypeEnum] = new IfcEnumerationDescriptor(Type::IfcFlowInstrumentTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("COMPACTFLUORESCENT"); + values.push_back("FLUORESCENT"); + values.push_back("HIGHPRESSUREMERCURY"); + values.push_back("HIGHPRESSURESODIUM"); + values.push_back("METALHALIDE"); + values.push_back("TUNGSTENFILAMENT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcLampTypeEnum] = new IfcEnumerationDescriptor(Type::IfcLampTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ELEVATOR"); + values.push_back("ESCALATOR"); + values.push_back("MOVINGWALKWAY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcTransportElementTypeEnum] = new IfcEnumerationDescriptor(Type::IfcTransportElementTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("DBA"); + values.push_back("DBB"); + values.push_back("DBC"); + values.push_back("NC"); + values.push_back("NR"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcSoundScaleEnum] = new IfcEnumerationDescriptor(Type::IfcSoundScaleEnum, values); + values.clear(); values.reserve(128); + values.push_back("ELECTRICACTUATOR"); + values.push_back("HANDOPERATEDACTUATOR"); + values.push_back("HYDRAULICACTUATOR"); + values.push_back("PNEUMATICACTUATOR"); + values.push_back("THERMOSTATICACTUATOR"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcActuatorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcActuatorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("RIGIDSEGMENT"); + values.push_back("FLEXIBLESEGMENT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDuctSegmentTypeEnum] = new IfcEnumerationDescriptor(Type::IfcDuctSegmentTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("DISCONTINUOUS"); + values.push_back("CONTINUOUS"); + values.push_back("CONTSAMEGRADIENT"); + values.push_back("CONTSAMEGRADIENTSAMECURVATURE"); + current_enum = enumeration_descriptor_map[Type::IfcTransitionCode] = new IfcEnumerationDescriptor(Type::IfcTransitionCode, values); + values.clear(); values.reserve(128); + values.push_back("COMPUTER"); + values.push_back("DIRECTWATERHEATER"); + values.push_back("DISHWASHER"); + values.push_back("ELECTRICCOOKER"); + values.push_back("ELECTRICHEATER"); + values.push_back("FACSIMILE"); + values.push_back("FREESTANDINGFAN"); + values.push_back("FREEZER"); + values.push_back("FRIDGE_FREEZER"); + values.push_back("HANDDRYER"); + values.push_back("INDIRECTWATERHEATER"); + values.push_back("MICROWAVE"); + values.push_back("PHOTOCOPIER"); + values.push_back("PRINTER"); + values.push_back("REFRIGERATOR"); + values.push_back("RADIANTHEATER"); + values.push_back("SCANNER"); + values.push_back("TELEPHONE"); + values.push_back("TUMBLEDRYER"); + values.push_back("TV"); + values.push_back("VENDINGMACHINE"); + values.push_back("WASHINGMACHINE"); + values.push_back("WATERHEATER"); + values.push_back("WATERCOOLER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcElectricApplianceTypeEnum] = new IfcEnumerationDescriptor(Type::IfcElectricApplianceTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("CURVE"); + values.push_back("AREA"); + current_enum = enumeration_descriptor_map[Type::IfcProfileTypeEnum] = new IfcEnumerationDescriptor(Type::IfcProfileTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("PROJECTED_LENGTH"); + values.push_back("TRUE_LENGTH"); + current_enum = enumeration_descriptor_map[Type::IfcProjectedOrTrueLengthEnum] = new IfcEnumerationDescriptor(Type::IfcProjectedOrTrueLengthEnum, values); + values.clear(); values.reserve(128); + values.push_back("CAST_IN_PLACE"); + values.push_back("COMPOSITE"); + values.push_back("PRECAST_CONCRETE"); + values.push_back("PREFAB_STEEL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPileConstructionEnum] = new IfcEnumerationDescriptor(Type::IfcPileConstructionEnum, values); + values.clear(); values.reserve(128); + values.push_back("BELTDRIVE"); + values.push_back("COUPLING"); + values.push_back("DIRECTDRIVE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcMotorConnectionTypeEnum] = new IfcEnumerationDescriptor(Type::IfcMotorConnectionTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ASSIGNEE"); + values.push_back("ASSIGNOR"); + values.push_back("LESSEE"); + values.push_back("LESSOR"); + values.push_back("LETTINGAGENT"); + values.push_back("OWNER"); + values.push_back("TENANT"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcOccupantTypeEnum] = new IfcEnumerationDescriptor(Type::IfcOccupantTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("WATERCOOLEDSHELLTUBE"); + values.push_back("WATERCOOLEDSHELLCOIL"); + values.push_back("WATERCOOLEDTUBEINTUBE"); + values.push_back("WATERCOOLEDBRAZEDPLATE"); + values.push_back("AIRCOOLED"); + values.push_back("EVAPORATIVECOOLED"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCondenserTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCondenserTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("COMBINEDVALUE"); + values.push_back("DISPOSAL"); + values.push_back("EXTRACTION"); + values.push_back("INSTALLATION"); + values.push_back("MANUFACTURE"); + values.push_back("TRANSPORTATION"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcEnvironmentalImpactCategoryEnum] = new IfcEnumerationDescriptor(Type::IfcEnvironmentalImpactCategoryEnum, values); + values.clear(); values.reserve(128); + values.push_back("LOGICALAND"); + values.push_back("LOGICALOR"); + current_enum = enumeration_descriptor_map[Type::IfcLogicalOperatorEnum] = new IfcEnumerationDescriptor(Type::IfcLogicalOperatorEnum, values); + values.clear(); values.reserve(128); + values.push_back("DYNAMIC"); + values.push_back("RECIPROCATING"); + values.push_back("ROTARY"); + values.push_back("SCROLL"); + values.push_back("TROCHOIDAL"); + values.push_back("SINGLESTAGE"); + values.push_back("BOOSTER"); + values.push_back("OPENTYPE"); + values.push_back("HERMETIC"); + values.push_back("SEMIHERMETIC"); + values.push_back("WELDEDSHELLHERMETIC"); + values.push_back("ROLLINGPISTON"); + values.push_back("ROTARYVANE"); + values.push_back("SINGLESCREW"); + values.push_back("TWINSCREW"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCompressorTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCompressorTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("GREATERTHAN"); + values.push_back("GREATERTHANOREQUALTO"); + values.push_back("LESSTHAN"); + values.push_back("LESSTHANOREQUALTO"); + values.push_back("EQUALTO"); + values.push_back("NOTEQUALTO"); + current_enum = enumeration_descriptor_map[Type::IfcBenchmarkEnum] = new IfcEnumerationDescriptor(Type::IfcBenchmarkEnum, values); + values.clear(); values.reserve(128); + values.push_back("HARD"); + values.push_back("SOFT"); + values.push_back("ADVISORY"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcConstraintEnum] = new IfcEnumerationDescriptor(Type::IfcConstraintEnum, values); + values.clear(); values.reserve(128); + values.push_back("BELL"); + values.push_back("BREAKGLASSBUTTON"); + values.push_back("LIGHT"); + values.push_back("MANUALPULLBOX"); + values.push_back("SIREN"); + values.push_back("WHISTLE"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcAlarmTypeEnum] = new IfcEnumerationDescriptor(Type::IfcAlarmTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("ADD"); + values.push_back("DIVIDE"); + values.push_back("MULTIPLY"); + values.push_back("SUBTRACT"); + current_enum = enumeration_descriptor_map[Type::IfcArithmeticOperatorEnum] = new IfcEnumerationDescriptor(Type::IfcArithmeticOperatorEnum, values); + values.clear(); values.reserve(128); + values.push_back("CARTESIAN"); + values.push_back("PARAMETER"); + values.push_back("UNSPECIFIED"); + current_enum = enumeration_descriptor_map[Type::IfcTrimmingPreference] = new IfcEnumerationDescriptor(Type::IfcTrimmingPreference, values); + values.clear(); values.reserve(128); + values.push_back("FLEXIBLESEGMENT"); + values.push_back("RIGIDSEGMENT"); + values.push_back("GUTTER"); + values.push_back("SPOOL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPipeSegmentTypeEnum] = new IfcEnumerationDescriptor(Type::IfcPipeSegmentTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("FLATOVAL"); + values.push_back("RECTANGULAR"); + values.push_back("ROUND"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcDuctSilencerTypeEnum] = new IfcEnumerationDescriptor(Type::IfcDuctSilencerTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("NOCHANGE"); + values.push_back("MODIFIED"); + values.push_back("ADDED"); + values.push_back("DELETED"); + values.push_back("MODIFIEDADDED"); + values.push_back("MODIFIEDDELETED"); + current_enum = enumeration_descriptor_map[Type::IfcChangeActionEnum] = new IfcEnumerationDescriptor(Type::IfcChangeActionEnum, values); + values.clear(); values.reserve(128); + values.push_back("DXCOOLINGCOIL"); + values.push_back("WATERCOOLINGCOIL"); + values.push_back("STEAMHEATINGCOIL"); + values.push_back("WATERHEATINGCOIL"); + values.push_back("ELECTRICHEATINGCOIL"); + values.push_back("GASHEATINGCOIL"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcCoilTypeEnum] = new IfcEnumerationDescriptor(Type::IfcCoilTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("RIGID_JOINED_MEMBER"); + values.push_back("PIN_JOINED_MEMBER"); + values.push_back("CABLE"); + values.push_back("TENSION_MEMBER"); + values.push_back("COMPRESSION_MEMBER"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcStructuralCurveTypeEnum] = new IfcEnumerationDescriptor(Type::IfcStructuralCurveTypeEnum, values); + values.clear(); values.reserve(128); + values.push_back("GRILL"); + values.push_back("LOUVER"); + values.push_back("SCREEN"); + values.push_back("USERDEFINED"); + values.push_back("NOTDEFINED"); + current_enum = enumeration_descriptor_map[Type::IfcPermeableCoveringOperationEnum] = new IfcEnumerationDescriptor(Type::IfcPermeableCoveringOperationEnum, values); } int Type::GetAttributeIndex(Enum t, const std::string& a) { if (entity_descriptor_map.empty()) ::InitDescriptorMap(); @@ -2280,3 +3922,21 @@ bool Type::GetAttributeOptional(Enum t, unsigned char a) { else return i->second->getArgumentOptional(a); } +std::pair Type::GetEnumerationIndex(Enum t, const std::string& a) { + if (enumeration_descriptor_map.empty()) ::InitDescriptorMap(); + std::map::const_iterator i = enumeration_descriptor_map.find(t); + if ( i == enumeration_descriptor_map.end() ) throw IfcException("Value not found"); + else return i->second->getIndex(a); +} + +Type::Enum Type::GetAttributeEnumerationClass(Enum t, unsigned char a) { + if (entity_descriptor_map.empty()) ::InitDescriptorMap(); + std::map::const_iterator i = entity_descriptor_map.find(t); + if ( i == entity_descriptor_map.end() ) throw IfcException("Type not found"); + else { + Type::Enum t = i->second->getArgumentEnumerationClass(a); + if ( t == Type::ALL ) throw IfcException("Not an enumeration"); + else return t; + } +} + diff --git a/src/ifcparse/Ifc2x3-rt.h b/src/ifcparse/Ifc2x3-rt.h index 4afeedb347..3b45f450cd 100644 --- a/src/ifcparse/Ifc2x3-rt.h +++ b/src/ifcparse/Ifc2x3-rt.h @@ -36,6 +36,8 @@ namespace Type { IfcUtil::ArgumentType GetAttributeType(Enum t, unsigned char a); const std::string& GetAttributeName(Enum t, unsigned char a); bool GetAttributeOptional(Enum t, unsigned char a); + std::pair GetEnumerationIndex(Enum t, const std::string& a); + Enum GetAttributeEnumerationClass(Enum t, unsigned char a); }} #endif diff --git a/src/ifcparse/IfcUntypedEntity.cpp b/src/ifcparse/IfcUntypedEntity.cpp index bd2ce55a67..3069eed95b 100644 --- a/src/ifcparse/IfcUntypedEntity.cpp +++ b/src/ifcparse/IfcUntypedEntity.cpp @@ -90,7 +90,8 @@ void Ifc::IfcUntypedEntity::setArgument(unsigned int i, const std::string& a) { if (arg_type == Argument_STRING) { writable_entity()->setArgument(i,a); } else if (arg_type == Argument_ENUMERATION) { - writable_entity()->setArgument(i,a); + std::pair enum_data = Ifc2x3::Type::GetEnumerationIndex(Ifc2x3::Type::GetAttributeEnumerationClass(_type, i), a); + writable_entity()->setArgument(i, enum_data.second, enum_data.first); } else invalid_argument(i,"STRING"); } void Ifc::IfcUntypedEntity::setArgument(unsigned int i, const std::vector& v) { diff --git a/src/ifcparse/IfcUtil.h b/src/ifcparse/IfcUtil.h index dd758c4a19..f0f26624c2 100644 --- a/src/ifcparse/IfcUtil.h +++ b/src/ifcparse/IfcUtil.h @@ -24,6 +24,7 @@ #include #include #include +#include #include "../ifcparse/SharedPointer.h" #include "../ifcparse/Ifc2x3enum.h" @@ -52,6 +53,29 @@ inline T* reinterpret_pointer_cast(F* from) { namespace IfcUtil { + class IfcEnumerationDescriptor { + private: + Ifc2x3::Type::Enum type; + std::vector values; + public: + IfcEnumerationDescriptor(Ifc2x3::Type::Enum type, const std::vector& values) + : type(type), values(values) {} + std::pair getIndex(const std::string& value) const { + std::vector::const_iterator it = std::find(values.begin(), values.end(), value); + if (it != values.end()) { + return std::make_pair(it->c_str(), std::distance(it, values.begin())); + } else { + throw IfcParse::IfcException("Invalid enumeration value"); + } + } + const std::vector& getValues() { + return values; + } + Ifc2x3::Type::Enum getType() { + return type; + } + }; + class IfcEntityDescriptor { public: class IfcArgumentDescriptor @@ -59,49 +83,56 @@ namespace IfcUtil { public: std::string name; bool optional; - ArgumentType type; - IfcArgumentDescriptor(const std::string& name, bool optional, ArgumentType type) - : name(name), optional(optional), type(type) {} + ArgumentType argument_type; + Ifc2x3::Type::Enum data_type; + IfcArgumentDescriptor(const std::string& name, bool optional, ArgumentType argument_type, Ifc2x3::Type::Enum data_type) + : name(name), optional(optional), argument_type(argument_type), data_type(data_type) {} }; private: Ifc2x3::Type::Enum type; IfcEntityDescriptor* parent; std::vector arguments; - unsigned argument_start() { + unsigned argument_start() const { return parent ? parent->getArgumentCount() : 0; } - IfcArgumentDescriptor& get_argument(unsigned i) { + const IfcArgumentDescriptor& get_argument(unsigned i) const { if (i < arguments.size()) return arguments[i]; else throw IfcParse::IfcException("Argument out of range"); } public: IfcEntityDescriptor(Ifc2x3::Type::Enum type, IfcEntityDescriptor* parent) : type(type), parent(parent) {} - void add(const std::string& name, bool optional, ArgumentType type) { - arguments.push_back(IfcArgumentDescriptor(name, optional, type)); + void add(const std::string& name, bool optional, ArgumentType argument_type, Ifc2x3::Type::Enum data_type = Ifc2x3::Type::ALL) { + arguments.push_back(IfcArgumentDescriptor(name, optional, argument_type, data_type)); } - unsigned getArgumentCount() { + unsigned getArgumentCount() const { return (parent ? parent->getArgumentCount() : 0) + arguments.size(); } - std::string& getArgumentName(unsigned i) { + const std::string& getArgumentName(unsigned i) const { const unsigned a = argument_start(); return i < a ? parent->getArgumentName(i) : get_argument(i-a).name; } - ArgumentType getArgumentType(unsigned i) { + ArgumentType getArgumentType(unsigned i) const { const unsigned a = argument_start(); return i < a ? parent->getArgumentType(i) - : get_argument(i-a).type; + : get_argument(i-a).argument_type; } - bool getArgumentOptional(unsigned i) { + bool getArgumentOptional(unsigned i) const { const unsigned a = argument_start(); return i < a ? parent->getArgumentOptional(i) : get_argument(i-a).optional; } - unsigned getArgumentIndex(const std::string& s) { + Ifc2x3::Type::Enum getArgumentEnumerationClass(unsigned i) const { + const unsigned a = argument_start(); + return i < a + ? parent->getArgumentEnumerationClass(i) + : get_argument(i-a).data_type; + } + unsigned getArgumentIndex(const std::string& s) const { unsigned a = argument_start(); for(std::vector::const_iterator i = arguments.begin(); i != arguments.end(); ++i) { if (i->name == s) return a;