///////////////////////////////////////////////////////////////////////////////
// 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 _IFC4X3_RC1_IFCPROPERTYSETTEMPLATE_AUTO_IMPL_H
#define _IFC4X3_RC1_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 IFC4X3_RC1 express schema definitions.
*/
namespace OdIfc4x3_rc1 {
/** \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 IFC4X3_RC1_EXPORT IfcPropertySetTemplate : public IfcPropertyTemplateDefinition
{
//DOM-IGNORE-BEGIN
OD_EXP_DECLARE_MEMBERS(OdIfc4x3_rc1::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