#ifndef  ENTITY_SDAIIFCAPPROVAL_H
#define  ENTITY_SDAIIFCAPPROVAL_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 SdaiIfcapproval : public SDAI_Application_instance {
    protected:
        SDAI_String _identifier;    //  OPTIONAL
        SDAI_String _name;    //  OPTIONAL
        SDAI_String _description;    //  OPTIONAL
        SDAI_String _timeofapproval;    //  OPTIONAL
        SDAI_String _status;    //  OPTIONAL
        SDAI_String _level;    //  OPTIONAL
        SDAI_String _qualifier;    //  OPTIONAL
        SdaiIfcactorselect _requestingapproval;    //  OPTIONAL
        SdaiIfcactorselect _givingapproval;    //  OPTIONAL
    public: 
        SdaiIfcapproval();
        SdaiIfcapproval( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcapproval( SdaiIfcapproval & e );
        ~SdaiIfcapproval();
        int opcode() {
            return 508;
        }
  const SdaiIfcidentifier   identifier_() const;
        SdaiIfcidentifier   identifier_();
        void identifier_( const SdaiIfcidentifier x );

  const SdaiIfclabel   name_() const;
        SdaiIfclabel   name_();
        void name_( const SdaiIfclabel x );

  const SdaiIfctext   description_() const;
        SdaiIfctext   description_();
        void description_( const SdaiIfctext x );

  const SdaiIfcdatetime   timeofapproval_() const;
        SdaiIfcdatetime   timeofapproval_();
        void timeofapproval_( const SdaiIfcdatetime x );

  const SdaiIfclabel   status_() const;
        SdaiIfclabel   status_();
        void status_( const SdaiIfclabel x );

  const SdaiIfclabel   level_() const;
        SdaiIfclabel   level_();
        void level_( const SdaiIfclabel x );

  const SdaiIfctext   qualifier_() const;
        SdaiIfctext   qualifier_();
        void qualifier_( const SdaiIfctext x );

        SdaiIfcactorselect_ptr_c requestingapproval_() const;
        SdaiIfcactorselect_ptr   requestingapproval_();
        void requestingapproval_( const SdaiIfcactorselect_ptr x );

        SdaiIfcactorselect_ptr_c givingapproval_() const;
        SdaiIfcactorselect_ptr   givingapproval_();
        void givingapproval_( const SdaiIfcactorselect_ptr x );

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

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

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

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

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

};

inline SdaiIfcapproval * create_SdaiIfcapproval() {
    return new SdaiIfcapproval;
}

void init_SdaiIfcapproval(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcapproval;
    extern AttrDescriptor *a_1108identifier;
    extern AttrDescriptor *a_1109name;
    extern AttrDescriptor *a_1110description;
    extern AttrDescriptor *a_1111timeofapproval;
    extern AttrDescriptor *a_1112status;
    extern AttrDescriptor *a_1113level;
    extern AttrDescriptor *a_1114qualifier;
    extern AttrDescriptor *a_1115requestingapproval;
    extern AttrDescriptor *a_1116givingapproval;
    extern Inverse_attribute *a_1117Ihasexternalreferences;
    extern Inverse_attribute *a_1118Iapprovedobjects;
    extern Inverse_attribute *a_1119Iapprovedresources;
    extern Inverse_attribute *a_1120Iisrelatedwith;
    extern Inverse_attribute *a_1121Irelates;
}

#endif
