///////////////////////////////////////////////////////////////////////////////
// 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_ADD2_IFCPROPERTYSETDEFINITION_AUTO_IMPL_H
#define _IFC4X3_ADD2_IFCPROPERTYSETDEFINITION_AUTO_IMPL_H
#include "IfcPropertyDefinitionAutoImpl.h"
#include "TD_PackPush.h"
/** \details
The namespace contains schema-dependent classes, definitions and sub routines
for work with IFC4X3_ADD2 express schema definitions.
*/
namespace OdIfc4x3_add2 {
/** \details
IfcPropertySetDefinition is a generalization of all individual property sets that can be assigned to an object or type object.
The property set definition can be either:
* Dynamically extendable property sets - IfcPropertySet, a set of properties for which the IFC specification only provides a kind of "meta model",
to be further declared by agreement. This means that no entity definition of the properties exists within the IFC specification.
The declaration is done by assigning a significant string value to the Name attribute of the entity as defined in the entity
IfcPropertySet and at each subtype of IfcProperty, referenced by the property set.
Dynamically defined property sets can have an underlying template provided by IfcPropertySetTemplate.
* Statically defined property sets - IfcPreDefinedPropertySet, a property set entity that exists within the IFC specification.
The semantic meaning of each statically defined property set is declared by its entity type and the meaning of the properties
is defined by the name and data type of the explicit attribute representing it.
Property set definitions define information that is shared among multiple instances of objects, either object occurrences or object types.
IfcPropertySetDefinition's (by their instantiable subtypes) can participate within the following relationships:
* Assignment to object types - a DefinesType direct relationship to IfcTypeObject that applies the property set,
with all included properties, to the object type. Those properties apply to all object occurrences having the same object type.
* Assignment to object occurrences - an DefinesOccurrence relationship to IfcRelDefinesByProperties that applies the property set,
with all included properties, to the object occurrence.
\changes
* IFC4 changes:
* The subtype IfcPreDefinedPropertySet has been added.
* Name of the inverse attribute DefinesType changed to IsDefinedBy.
* Type of the inverse attribute DefinesType type changed from "SET OF [0:1] IfcTypeObject FOR HasPropertySets" to "SET OF [0:?] IfcRelDefinesByTemplate FOR RelatedPropertySets".
* Name of the inverse attribute PropertyDefinitionOf changed to DefinesType.
* Type of the inverse attribute PropertyDefinitionOf changed from "SET OF [0:1] IfcRelDefinesByProperties FOR RelatingPropertyDefinition" to "SET OF [0:?] IfcTypeObject FOR HasPropertySets".
*/
class IFC4X3_EXPORT IfcPropertySetDefinition : public IfcPropertyDefinition
{
//DOM-IGNORE-BEGIN
OD_EXP_NON_INSTANTIABLE_DECLARE_MEMBERS(OdIfc4x3_add2::IfcPropertySetDefinition);
//DOM-IGNORE-END
public:
//
// OdDAI early binding accessors
//
/** \details
Returns the value of DefinesType attribute. DefinesType is the type of an object to which the property set is assigned.
The property set acts as a shared property set to all occurrences of the type object.
\param DefinesType [out] Receives an array of object identifiers representing the DefinesType attribute.
\remarks
The relationship between the IfcPropertySetDefinition and the IfcTypeObject is a direct relationship,
not utilizing IfcRelDefinesByProperties, for maintaining compatibility with earlier releases of this standard.
*/
void getInvDefinesType(OdDAIObjectIds& DefinesType) const;
/** \details
Returns the value of IsDefinedBy attribute. IsDefinedBy is a relation to the property set template,
via the objectified relationship IfcRelDefinesByTemplate, that provides the definition template
for the property set or quantity set and its properties, if it is specified.
\param IsDefinedBy [out] Receives an array of object identifiers representing the IsDefinedBy attribute.
*/
void getInvIsDefinedBy(OdDAIObjectIds& IsDefinedBy) const;
/** \details
Returns the value of DefinesOccurrence attribute. DefinesOccurrence is reference to the relation to one
or many object occurrences that are characterized by the property set definition.
A single property set can be assigned to multiple object occurrences using the objectified relationship IfcRefDefinesByProperties.
\param DefinesOccurrence [out] Receives an array of object identifiers representing the IsDefinedBy attribute.
*/
void getInvDefinesOccurrence(OdDAIObjectIds& DefinesOccurrence) const;
public:
/** \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
Returns a type of a class instance.
\returns
Pointer to the