#ifndef  ENTITY_SDAIIFCORGANIZATION_H
#define  ENTITY_SDAIIFCORGANIZATION_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 SdaiIfcorganization : public SDAI_Application_instance {
    protected:
        SDAI_String _identification;    //  OPTIONAL
        SDAI_String _name;
        SDAI_String _description;    //  OPTIONAL
        EntityAggregate_ptr _roles = NULL;    //  OPTIONAL          //  of  ifcactorrole

        EntityAggregate_ptr _addresses = NULL;    //  OPTIONAL          //  of  ifcaddress

    public: 
        SdaiIfcorganization();
        SdaiIfcorganization( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcorganization( SdaiIfcorganization & e );
        ~SdaiIfcorganization();
        int opcode() {
            return 643;
        }
  const SdaiIfcidentifier   identification_() const;
        SdaiIfcidentifier   identification_();
        void identification_( 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 );

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

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

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

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

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

};

inline SdaiIfcorganization * create_SdaiIfcorganization() {
    return new SdaiIfcorganization;
}

void init_SdaiIfcorganization(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcorganization;
    extern AttrDescriptor *a_1431identification;
    extern AttrDescriptor *a_1432name;
    extern AttrDescriptor *a_1433description;
    extern AttrDescriptor *a_1434roles;
    extern AttrDescriptor *a_1435addresses;
    extern Inverse_attribute *a_1436Iisrelatedby;
    extern Inverse_attribute *a_1437Irelates;
    extern Inverse_attribute *a_1438Iengages;
}

#endif
