/////////////////////////////////////////////////////////////////////////////// // 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. /////////////////////////////////////////////////////////////////////////////// #ifndef _IFC_REPR_CTX_RDNT_VALIDATION_TASK_H #define _IFC_REPR_CTX_RDNT_VALIDATION_TASK_H #include"OdaCommon.h" #include "IfcValidationExport.h" #include "daiExtentValidationTask.h" #include "daiValidationHealer.h" #include "daiValidationCommon.h" namespace OdIfc { class IFC_VALIDATION_EXPORT RepresentationContextRedundantValidationTask : public OdDAI::ExtentValidationTask { ODRX_VALIDATION_DECLARE_MEMBERS(RepresentationContextRedundantValidationTask); OdDAIObjectId m_generalContext; OdDAIObjectIds m_excessiveContexts; public: RepresentationContextRedundantValidationTask(); virtual OdDAI::Logical validate(OdDAI::InstanceValidationContext* pInstanceCtx, OdSharedPtr& invalidParams) override; OdAnsiString description() const override; const OdDAIObjectIds& getExcessiveContexts(); const OdDAIObjectId& getGeneralContext(); }; typedef OdSmartPtr RepresentationContextRedundantValidationTaskPtr; class IFC_VALIDATION_EXPORT RepresentationContextRedundantValidationHealer : public OdDAI::ValidationHealer { ODRX_DECLARE_MEMBERS(RepresentationContextRedundantValidationHealer); public: /** \details Fixes problem with excessive IfcRepresentationSubcontext items in the model In case model contains too much IfcRepresentationSubcontext instance, close to one subcontext per shape representation, there will be attempt to use only one that will cause to increasing performance of composing entities. \param model [in] A raw pointer to the OdDAI object identifiers of the entity instances. \returns Result of healing. Returns True if healing is successful. */ virtual OdDAI::Logical heal(OdDAI::Model* model, OdDAI::ValidationTask::InvalidValidationParamsBase* invalidParams); }; typedef OdSmartPtr RepresentationContextRedundantValidationHealerPtr; } #endif // !_IFC_REPR_CTX_RDNT_VALIDATION_TASK_H