/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// // This file is generated automatically. #ifndef _IFC4X1_IFCPROPERTYSETTEMPLATE_AUTO_IMPL_H #define _IFC4X1_IFCPROPERTYSETTEMPLATE_AUTO_IMPL_H #include "IfcPropertyTemplateDefinitionAutoImpl.h" #include "TD_PackPush.h" /** \details The namespace contains schema-dependent classes, definitions and sub routines for work with IFC4X1 express schema definitions. */ namespace OdIfc4x1 { /** \details IfcPropertySetTemplate defines the template for all dynamically extensible property sets represented by IfcPropertySet. The property set template is a container of property templates within a property tree. The individual property templates are interpreted according to their Name attribute and will have no values assigned. Property set templates can form part of a property library used and declared within a project. Depending on the TemplateType the IfcPropertySetTemplate defines a template for: * "Pset_" - occurrences of IfcPropertySet * "QTO_" - occurrences of IfcElementQuantity \remarks By convention an IfcPropertySetTemplate can also be used as a template for an IfcElementQuantity, being a particular type of a property set definition. */ class IFC4X1_EXPORT IfcPropertySetTemplate : public IfcPropertyTemplateDefinition { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc4x1::IfcPropertySetTemplate); //DOM-IGNORE-END public: // // OdDAI early binding accessors // /** \details Returns the value of TemplateType attribute. TemplateType is property set type defining whether the property set is applicable to a type (subtypes of IfcTypeObject), to an occurrence (subtypes of IfcObject), or as a special case to a performance history. The attribute ApplicableEntity can further refine the applicability to a single or multiple entity type(s). \returns Returns the value of TemplateType attribute. */ IfcPropertySetTemplateTypeEnum getTemplateType() const; /** \details Sets the value of TemplateType attribute. TemplateType is property set type defining whether the property set is applicable to a type (subtypes of IfcTypeObject), to an occurrence (subtypes of IfcObject), or as a special case to a performance history. The attribute ApplicableEntity can further refine the applicability to a single or multiple entity type(s). \param TemplateType [in] Template type to set. */ void setTemplateType(IfcPropertySetTemplateTypeEnum TemplateType); /** \details Returns the value of ApplicableEntity attribute. ApplicableEntity is the attribute that optionally defines the data type of the applicable type or occurrence object, to which the assigned property set template can relate. If not present, no instruction is given to which type or occurrence object the property set template is applicable. The following conventions are used: * The IFC entity name of the applicable entity using the IFC naming convention, CamelCase with IFC prefix * It can be optionally followed by the predefined type after the separator "/" (forward slash), using upper case * If a performance history object of a particular distribution object is attributes by the property set template, then the entity name (and potentially amended by the predefined type) is expanded by adding '[PerformanceHistory]' * If one property set template is applicable to many type and/or occurrence objects, then those object names should be separated by comma "," forming a comma separated string. - EXAMPLE - * Referring to a boiler type as applicable entity would be expressed as 'IfcBoilerType'. * Referring to a steam boiler type as applicable entity would be expressed as 'IfcBoilerType/STEAM'. * Referring to a wall and wall standard case and a wall type would be expressed as 'IfcWall, IfcWallStandardCase, IfcWallType'. An applicable IfcPerformanceHistory assigned to an occurrence or type object would be indicated by IfcBoilerType[PerformanceHistory] or IfcBoilerType/STEAM[PerformanceHistory] respectively. \returns Returns the value of ApplicableEntity attribute. */ const OdAnsiString& getApplicableEntity() const; /** \details Sets the value of ApplicableEntity attribute. ApplicableEntity is the attribute that optionally defines the data type of the applicable type or occurrence object, to which the assigned property set template can relate. If not present, no instruction is given to which type or occurrence object the property set template is applicable. The following conventions are used: * The IFC entity name of the applicable entity using the IFC naming convention, CamelCase with IFC prefix * It can be optionally followed by the predefined type after the separator "/" (forward slash), using upper case * If a performance history object of a particular distribution object is attributes by the property set template, then the entity name (and potentially amended by the predefined type) is expanded by adding '[PerformanceHistory]' * If one property set template is applicable to many type and/or occurrence objects, then those object names should be separated by comma "," forming a comma separated string. - EXAMPLE - * Referring to a boiler type as applicable entity would be expressed as 'IfcBoilerType'. * Referring to a steam boiler type as applicable entity would be expressed as 'IfcBoilerType/STEAM'. * Referring to a wall and wall standard case and a wall type would be expressed as 'IfcWall, IfcWallStandardCase, IfcWallType'. An applicable IfcPerformanceHistory assigned to an occurrence or type object would be indicated by IfcBoilerType[PerformanceHistory] or IfcBoilerType/STEAM[PerformanceHistory] respectively. \param ApplicableEntity [in] Applicable entity to set. */ void setApplicableEntity(const OdAnsiString& ApplicableEntity); /** \details Returns the value of HasPropertyTemplates attribute. HasPropertyTemplates is a set of IfcPropertyTemplate's instances that are defined within the scope of the IfcPropertySetTemplate. \param HasPropertyTemplates [out] Receives an array of object identifiers representing the HasPropertyTemplates attribute. */ void getHasPropertyTemplates(OdDAIObjectIds& HasPropertyTemplates) const; /** \details Returns the value of HasPropertyTemplates attribute. HasPropertyTemplates is a set of IfcPropertyTemplate instances that are defined within the scope of the IfcPropertySetTemplate. \returns Returns an array of object identifiers representing the HasPropertyTemplates attribute. */ OdDAI::SetOfOdDAIObjectId& hasPropertyTemplates(); /** \details Returns the value of Defines attribute. This attribute is a relation to the property sets, via the objectified relationship IfcRelDefinesByTemplate, that, if given, utilizes the definition template. \param Defines [out] Receives an array of object identifiers representing the Defines attribute. */ void getInvDefines(OdDAIObjectIds& Defines) const; public: /** \details Default constructor for the IfcPropertySetTemplate class. */ IfcPropertySetTemplate(); /** \details Reads object's data from the specified filer. \param rdFiler [in] Pointer to a filer from which to read the data. \returns A value of OdResult type that contains the result of the method execution. */ virtual OdResult inFields(OdDAI::OdSpfFilerBase* rdFiler) override; /** \details Writes object's data the the specified filer. \param wrFiler [in] Pointer to a filer to which to write the data. \returns A value of OdResult type that contains the result of the method execution. */ virtual OdResult outFields(OdDAI::OdSpfFilerBase* wrFiler) override; /** \details Sets the object ID of this instance to inverse attributes of related instances according to schema specification of inverse attributes. */ virtual void setInverseCounterParts() override; /** \details Returns a type of a class instance. \returns Pointer to the OdDAI::Entity type that determines an entity definition within a schema. */ virtual OdDAI::Entity* getInstanceType() const override; /** \details Returns an attribute value for the specified attribute name. \param attrName [in] Name of an attribute to query. \returns OdRxValue object that represents a generic variant type value. */ virtual OdRxValue getAttr(const char * attrName) const override; /** \details Resets a value for the specified attribute. \param explicitAttrName [in] Explicit name of the attribute to reset. */ virtual void unsetAttr(const char * explicitAttrName) override; /** \details Checks whether the specified attribute is set. \param explicitAttrName [in] Explicit name of the attribute to test. \returns true if the specified attribute is set, false otherwise. */ virtual bool testAttr(const char * explicitAttrName) const override; /** \details Sets the specified attribute with a given value. \param explicitAttrName [in] Explicit name of the attribute to set. \param val [in] Value to set. \returns true if the value is successfully set for the specified attribute, false otherwise. */ virtual bool putAttr(const char * explicitAttrName, const OdRxValue &val) override; /** \details Checks whether the specified instance is the object derived from or belongs to this class. \param entityType [in] Entity to check. \returns true if the specified instance is the object derived from or belongs to this class, false otherwise. */ virtual bool isKindOf(OdIfc::OdIfcEntityType entityType) const override; /** \details Returns the type of this entity. \returns A value of the OdIfc::OdIfcEntityType type that represents type of this entity. */ virtual OdIfc::OdIfcEntityType type() const override; /** \details Returns an attribute value for the specified attribute definition. \param attrDef [in] Attribute definition to query. \returns OdRxValue object that represents a generic variant type value. */ virtual OdRxValue getAttr(const OdIfc::OdIfcAttribute attrDef) const override; /** \details Resets a value for the specified attribute. \param explicitAttrDef [in] Explicit definition that represents an attribute to reset. */ virtual void unsetAttr(const OdIfc::OdIfcAttribute explicitAttrDef) override; /** \details Checks whether the specified attribute is set. \param explicitAttrDef [in] Attribute definition to test. \returns true if the specified attribute is set, false otherwise. */ virtual bool testAttr(const OdIfc::OdIfcAttribute explicitAttrDef) const override; /** \details Sets the specified attribute with a given value. \param explicitAttrDef [in] Explicit attribute definition to set. \param val [in] Value to set. \returns true if the value is successfully set for the specified attribute, false otherwise. */ virtual bool putAttr(const OdIfc::OdIfcAttribute explicitAttrDef, const OdRxValue &val) override; protected: // Fields declaration: OdDAI::Enum m_TemplateType; // IfcPropertySetTemplateTypeEnum [optional] OdAnsiString m_ApplicableEntity; // IfcIdentifier [optional] OdDAI::SetOfOdDAIObjectId m_HasPropertyTemplates; // SET [1:?] of IfcPropertyTemplate // Declare friend classes for inverse attributes functionality: friend class IfcRelDefinesByTemplate; }; /** \details A data type that represents a smart pointer to a IfcPropertySetTemplate object. */ typedef OdSmartPtr IfcPropertySetTemplatePtr; } // namespace #include "TD_PackPop.h" #endif // _IFC4X1_IFCPROPERTYSETTEMPLATE_AUTO_IMPL_H