#ifndef  ENTITY_SDAIIFCSCHEDULETIMECONTROL_H
#define  ENTITY_SDAIIFCSCHEDULETIMECONTROL_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 SdaiIfcscheduletimecontrol : public SdaiIfccontrol {
     protected:
        SdaiIfcdatetimeselect _actualstart;    //  OPTIONAL
        SdaiIfcdatetimeselect _earlystart;    //  OPTIONAL
        SdaiIfcdatetimeselect _latestart;    //  OPTIONAL
        SdaiIfcdatetimeselect _schedulestart;    //  OPTIONAL
        SdaiIfcdatetimeselect _actualfinish;    //  OPTIONAL
        SdaiIfcdatetimeselect _earlyfinish;    //  OPTIONAL
        SdaiIfcdatetimeselect _latefinish;    //  OPTIONAL
        SdaiIfcdatetimeselect _schedulefinish;    //  OPTIONAL
        SDAI_Real _scheduleduration = 0.0;    //  OPTIONAL
        SDAI_Real _actualduration = 0.0;    //  OPTIONAL
        SDAI_Real _remainingtime = 0.0;    //  OPTIONAL
        SDAI_Real _freefloat = 0.0;    //  OPTIONAL
        SDAI_Real _totalfloat = 0.0;    //  OPTIONAL
        SDAI_BOOLEAN _iscritical = false;    //  OPTIONAL
        SdaiIfcdatetimeselect _statustime;    //  OPTIONAL
        SDAI_Real _startfloat = 0.0;    //  OPTIONAL
        SDAI_Real _finishfloat = 0.0;    //  OPTIONAL
        SDAI_Real _completion = 0.0;    //  OPTIONAL
    public: 
        SdaiIfcscheduletimecontrol();
        SdaiIfcscheduletimecontrol( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcscheduletimecontrol( SdaiIfcscheduletimecontrol & e );
        ~SdaiIfcscheduletimecontrol();
        int opcode() {
            return 78;
        }
        SdaiIfcdatetimeselect_ptr_c actualstart_() const;
        SdaiIfcdatetimeselect_ptr   actualstart_();
        void actualstart_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfcdatetimeselect_ptr_c earlystart_() const;
        SdaiIfcdatetimeselect_ptr   earlystart_();
        void earlystart_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfcdatetimeselect_ptr_c latestart_() const;
        SdaiIfcdatetimeselect_ptr   latestart_();
        void latestart_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfcdatetimeselect_ptr_c schedulestart_() const;
        SdaiIfcdatetimeselect_ptr   schedulestart_();
        void schedulestart_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfcdatetimeselect_ptr_c actualfinish_() const;
        SdaiIfcdatetimeselect_ptr   actualfinish_();
        void actualfinish_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfcdatetimeselect_ptr_c earlyfinish_() const;
        SdaiIfcdatetimeselect_ptr   earlyfinish_();
        void earlyfinish_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfcdatetimeselect_ptr_c latefinish_() const;
        SdaiIfcdatetimeselect_ptr   latefinish_();
        void latefinish_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfcdatetimeselect_ptr_c schedulefinish_() const;
        SdaiIfcdatetimeselect_ptr   schedulefinish_();
        void schedulefinish_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfctimemeasure   scheduleduration_() const;
        void scheduleduration_( const SdaiIfctimemeasure x );

        SdaiIfctimemeasure   actualduration_() const;
        void actualduration_( const SdaiIfctimemeasure x );

        SdaiIfctimemeasure   remainingtime_() const;
        void remainingtime_( const SdaiIfctimemeasure x );

        SdaiIfctimemeasure   freefloat_() const;
        void freefloat_( const SdaiIfctimemeasure x );

        SdaiIfctimemeasure   totalfloat_() const;
        void totalfloat_( const SdaiIfctimemeasure x );

        Boolean   iscritical_() const;
        void iscritical_( const Boolean x );

        SdaiIfcdatetimeselect_ptr_c statustime_() const;
        SdaiIfcdatetimeselect_ptr   statustime_();
        void statustime_( const SdaiIfcdatetimeselect_ptr x );

        SdaiIfctimemeasure   startfloat_() const;
        void startfloat_( const SdaiIfctimemeasure x );

        SdaiIfctimemeasure   finishfloat_() const;
        void finishfloat_( const SdaiIfctimemeasure x );

        SdaiIfcpositiveratiomeasure   completion_() const;
        void completion_( const SdaiIfcpositiveratiomeasure x );

        SdaiIfcrelassignstasks_ptr_c scheduletimecontrolassigned_() const;
        SdaiIfcrelassignstasks_ptr   scheduletimecontrolassigned_();
        void scheduletimecontrolassigned_( const SdaiIfcrelassignstasks_ptr x );

};

inline SdaiIfcscheduletimecontrol * create_SdaiIfcscheduletimecontrol() {
    return new SdaiIfcscheduletimecontrol;
}

void init_SdaiIfcscheduletimecontrol(Registry& reg);

namespace ifc2x3 {
    extern EntityDescriptor *e_ifcscheduletimecontrol;
    extern AttrDescriptor *a_132actualstart;
    extern AttrDescriptor *a_133earlystart;
    extern AttrDescriptor *a_134latestart;
    extern AttrDescriptor *a_135schedulestart;
    extern AttrDescriptor *a_136actualfinish;
    extern AttrDescriptor *a_137earlyfinish;
    extern AttrDescriptor *a_138latefinish;
    extern AttrDescriptor *a_139schedulefinish;
    extern AttrDescriptor *a_140scheduleduration;
    extern AttrDescriptor *a_141actualduration;
    extern AttrDescriptor *a_142remainingtime;
    extern AttrDescriptor *a_143freefloat;
    extern AttrDescriptor *a_144totalfloat;
    extern AttrDescriptor *a_145iscritical;
    extern AttrDescriptor *a_146statustime;
    extern AttrDescriptor *a_147startfloat;
    extern AttrDescriptor *a_148finishfloat;
    extern AttrDescriptor *a_149completion;
    extern Inverse_attribute *a_150Ischeduletimecontrolassigned;
}

#endif
