#ifndef  ENTITY_SDAIIFCRELINTERFERESELEMENTS_H
#define  ENTITY_SDAIIFCRELINTERFERESELEMENTS_H

// This file was generated by exp2cxx,
// 0.8.1.
// You probably don't want to edit it since your modifications
// will be lost if exp2cxx is used to regenerate it.

class SC_SCHEMA_EXPORT SdaiIfcrelinterfereselements : public SdaiIfcrelconnects {
     protected:
        SDAI_Application_instance_ptr _relatingelement = NULL;
        SDAI_Application_instance_ptr _relatedelement = NULL;
        SDAI_Application_instance_ptr _interferencegeometry = NULL;    //  OPTIONAL
        SDAI_String _interferencetype;    //  OPTIONAL
        SDAI_LOGICAL _impliedorder;
    public: 
        SdaiIfcrelinterfereselements();
        SdaiIfcrelinterfereselements( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcrelinterfereselements( SdaiIfcrelinterfereselements & e );
        ~SdaiIfcrelinterfereselements();
        int opcode() {
            return 710;
        }
        SdaiIfcelement_ptr_c relatingelement_() const;
        SdaiIfcelement_ptr   relatingelement_();
        void relatingelement_( const SdaiIfcelement_ptr x );

        SdaiIfcelement_ptr_c relatedelement_() const;
        SdaiIfcelement_ptr   relatedelement_();
        void relatedelement_( const SdaiIfcelement_ptr x );

        SdaiIfcconnectiongeometry_ptr_c interferencegeometry_() const;
        SdaiIfcconnectiongeometry_ptr   interferencegeometry_();
        void interferencegeometry_( const SdaiIfcconnectiongeometry_ptr x );

  const SdaiIfcidentifier   interferencetype_() const;
        SdaiIfcidentifier   interferencetype_();
        void interferencetype_( const SdaiIfcidentifier x );

        Logical   impliedorder_() const;
        void impliedorder_( const Logical x );

};

inline SdaiIfcrelinterfereselements * create_SdaiIfcrelinterfereselements() {
    return new SdaiIfcrelinterfereselements;
}

void init_SdaiIfcrelinterfereselements(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcrelinterfereselements;
    extern AttrDescriptor *a_1564relatingelement;
    extern AttrDescriptor *a_1565relatedelement;
    extern AttrDescriptor *a_1566interferencegeometry;
    extern AttrDescriptor *a_1567interferencetype;
    extern AttrDescriptor *a_1568impliedorder;
}

#endif
