///////////////////////////////////////////////////////////////////////////////
// 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 _IFC4_IFCQUANTITYSET_AUTO_IMPL_H
#define _IFC4_IFCQUANTITYSET_AUTO_IMPL_H
#include "IfcPropertySetDefinitionAutoImpl.h"
#include "TD_PackPush.h"
/** \details
The namespace contains schema-dependent classes, definitions and sub routines
for work with IFC4 express schema definitions.
*/
namespace OdIfc4 {
/** \details
IfcQuantitySet is the the abstract supertype for all quantity sets attached to objects.
The quantity set is a container class that holds the individual quantities within a quantity tree.
These quantities are interpreted according to their name attribute and classified according to their measure type.
Some quantity sets are included in the IFC specification and have a predefined set of quantities indicated by assigning a significant name.
These quantity sets are listed as "quantity sets" within this specification.
Quantity sets applicable to certain objects are listed in the object specification.
An IfcPropertySetTemplate can define the underlying structure, i.e. the required name,
the applicable object or object types to which the quantity set can be attached, and the individual quantities that can be included.
Quantity sets are related to other objects by using the relationship object that refers to the corresponding object:
* Occurrence Object: IfcRelDefinesByProperties using the inverse attribute DefinesOccurrence.
* Type Object: using a direct link by inverse attribute DefinesType.
* Underlying template: IfcRelDefinesByTemplate using the inverse attribute IsDefinedBy.
* External reference: subtypes of IfcRelAssociates are used to provide a link to a classification system,
or external library providing further reference to the quantity set. Accessible by inverse attribute HasAssociations.
*/
class IFC4_EXPORT IfcQuantitySet : public IfcPropertySetDefinition
{
//DOM-IGNORE-BEGIN
OD_EXP_NON_INSTANTIABLE_DECLARE_MEMBERS(OdIfc4::IfcQuantitySet);
//DOM-IGNORE-END
public:
/** \details
Returns a type of a class instance.
\returns
Pointer to the