#ifndef  ENTITY_SDAIIFCELEMENT_H
#define  ENTITY_SDAIIFCELEMENT_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 SdaiIfcelement : public SdaiIfcproduct {
     protected:
        SDAI_String _tag;    //  OPTIONAL
    public: 
        SdaiIfcelement();
        SdaiIfcelement( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcelement( SdaiIfcelement & e );
        ~SdaiIfcelement();
        int opcode() {
            return 20;
        }
  const SdaiIfcidentifier   tag_() const;
        SdaiIfcidentifier   tag_();
        void tag_( const SdaiIfcidentifier x );

        EntityAggregate_ptr_c fillsvoids_() const;
        EntityAggregate_ptr   fillsvoids_();
        void fillsvoids_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c connectedto_() const;
        EntityAggregate_ptr   connectedto_();
        void connectedto_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c isinterferedbyelements_() const;
        EntityAggregate_ptr   isinterferedbyelements_();
        void isinterferedbyelements_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c interfereselements_() const;
        EntityAggregate_ptr   interfereselements_();
        void interfereselements_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c hasprojections_() const;
        EntityAggregate_ptr   hasprojections_();
        void hasprojections_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c referencedinstructures_() const;
        EntityAggregate_ptr   referencedinstructures_();
        void referencedinstructures_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c hasopenings_() const;
        EntityAggregate_ptr   hasopenings_();
        void hasopenings_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c isconnectionrealization_() const;
        EntityAggregate_ptr   isconnectionrealization_();
        void isconnectionrealization_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c providesboundaries_() const;
        EntityAggregate_ptr   providesboundaries_();
        void providesboundaries_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c connectedfrom_() const;
        EntityAggregate_ptr   connectedfrom_();
        void connectedfrom_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c containedinstructure_() const;
        EntityAggregate_ptr   containedinstructure_();
        void containedinstructure_( const EntityAggregate_ptr x );

};

inline SdaiIfcelement * create_SdaiIfcelement() {
    return new SdaiIfcelement;
}

void init_SdaiIfcelement(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcelement;
    extern AttrDescriptor *a_48tag;
    extern Inverse_attribute *a_49Ifillsvoids;
    extern Inverse_attribute *a_50Iconnectedto;
    extern Inverse_attribute *a_51Iisinterferedbyelements;
    extern Inverse_attribute *a_52Iinterfereselements;
    extern Inverse_attribute *a_53Ihasprojections;
    extern Inverse_attribute *a_54Ireferencedinstructures;
    extern Inverse_attribute *a_55Ihasopenings;
    extern Inverse_attribute *a_56Iisconnectionrealization;
    extern Inverse_attribute *a_57Iprovidesboundaries;
    extern Inverse_attribute *a_58Iconnectedfrom;
    extern Inverse_attribute *a_59Icontainedinstructure;
}

#endif
