#ifndef  ENTITY_SDAIIFCOWNERHISTORY_H
#define  ENTITY_SDAIIFCOWNERHISTORY_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 SdaiIfcownerhistory : public SDAI_Application_instance {
    protected:
        SDAI_Application_instance_ptr _owninguser = NULL;
        SDAI_Application_instance_ptr _owningapplication = NULL;
        SdaiIfcstateenum_var _state;    //  OPTIONAL
        SdaiIfcchangeactionenum_var _changeaction;    //  OPTIONAL
        SDAI_Integer _lastmodifieddate = 0;    //  OPTIONAL
        SDAI_Application_instance_ptr _lastmodifyinguser = NULL;    //  OPTIONAL
        SDAI_Application_instance_ptr _lastmodifyingapplication = NULL;    //  OPTIONAL
        SDAI_Integer _creationdate = 0;
    public: 
        SdaiIfcownerhistory();
        SdaiIfcownerhistory( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcownerhistory( SdaiIfcownerhistory & e );
        ~SdaiIfcownerhistory();
        int opcode() {
            return 678;
        }
        SdaiIfcpersonandorganization_ptr_c owninguser_() const;
        SdaiIfcpersonandorganization_ptr   owninguser_();
        void owninguser_( const SdaiIfcpersonandorganization_ptr x );

        SdaiIfcapplication_ptr_c owningapplication_() const;
        SdaiIfcapplication_ptr   owningapplication_();
        void owningapplication_( const SdaiIfcapplication_ptr x );

  const SdaiIfcstateenum_var   state_() const;
        SdaiIfcstateenum_var   state_();
        void state_( const SdaiIfcstateenum_var x );

  const SdaiIfcchangeactionenum_var   changeaction_() const;
        SdaiIfcchangeactionenum_var   changeaction_();
        void changeaction_( const SdaiIfcchangeactionenum_var x );

        SdaiIfctimestamp   lastmodifieddate_() const;
        void lastmodifieddate_( const SdaiIfctimestamp x );

        SdaiIfcpersonandorganization_ptr_c lastmodifyinguser_() const;
        SdaiIfcpersonandorganization_ptr   lastmodifyinguser_();
        void lastmodifyinguser_( const SdaiIfcpersonandorganization_ptr x );

        SdaiIfcapplication_ptr_c lastmodifyingapplication_() const;
        SdaiIfcapplication_ptr   lastmodifyingapplication_();
        void lastmodifyingapplication_( const SdaiIfcapplication_ptr x );

        SdaiIfctimestamp   creationdate_() const;
        void creationdate_( const SdaiIfctimestamp x );

};

inline SdaiIfcownerhistory * create_SdaiIfcownerhistory() {
    return new SdaiIfcownerhistory;
}

void init_SdaiIfcownerhistory(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcownerhistory;
    extern AttrDescriptor *a_1502owninguser;
    extern AttrDescriptor *a_1503owningapplication;
    extern AttrDescriptor *a_1504state;
    extern AttrDescriptor *a_1505changeaction;
    extern AttrDescriptor *a_1506lastmodifieddate;
    extern AttrDescriptor *a_1507lastmodifyinguser;
    extern AttrDescriptor *a_1508lastmodifyingapplication;
    extern AttrDescriptor *a_1509creationdate;
}

#endif
