#ifndef  ENTITY_SDAIIFCCONSTRAINT_H
#define  ENTITY_SDAIIFCCONSTRAINT_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 SdaiIfcconstraint : public SDAI_Application_instance {
    protected:
        SDAI_String _name;
        SDAI_String _description;    //  OPTIONAL
        SdaiIfcconstraintenum_var _constraintgrade;
        SDAI_String _constraintsource;    //  OPTIONAL
        SdaiIfcactorselect _creatingactor;    //  OPTIONAL
        SdaiIfcdatetimeselect _creationtime;    //  OPTIONAL
        SDAI_String _userdefinedgrade;    //  OPTIONAL
    public: 
        SdaiIfcconstraint();
        SdaiIfcconstraint( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcconstraint( SdaiIfcconstraint & e );
        ~SdaiIfcconstraint();
        int opcode() {
            return 179;
        }
  const SdaiIfclabel   name_() const;
        SdaiIfclabel   name_();
        void name_( const SdaiIfclabel x );

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

  const SdaiIfcconstraintenum_var   constraintgrade_() const;
        SdaiIfcconstraintenum_var   constraintgrade_();
        void constraintgrade_( const SdaiIfcconstraintenum_var x );

  const SdaiIfclabel   constraintsource_() const;
        SdaiIfclabel   constraintsource_();
        void constraintsource_( const SdaiIfclabel x );

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

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

  const SdaiIfclabel   userdefinedgrade_() const;
        SdaiIfclabel   userdefinedgrade_();
        void userdefinedgrade_( const SdaiIfclabel x );

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

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

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

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

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

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

};

inline SdaiIfcconstraint * create_SdaiIfcconstraint() {
    return new SdaiIfcconstraint;
}

void init_SdaiIfcconstraint(Registry& reg);

namespace ifc2x3 {
    extern EntityDescriptor *e_ifcconstraint;
    extern AttrDescriptor *a_384name;
    extern AttrDescriptor *a_385description;
    extern AttrDescriptor *a_386constraintgrade;
    extern AttrDescriptor *a_387constraintsource;
    extern AttrDescriptor *a_388creatingactor;
    extern AttrDescriptor *a_389creationtime;
    extern AttrDescriptor *a_390userdefinedgrade;
    extern Inverse_attribute *a_391Iclassifiedas;
    extern Inverse_attribute *a_392Irelatesconstraints;
    extern Inverse_attribute *a_393Iisrelatedwith;
    extern Inverse_attribute *a_394Ipropertiesforconstraint;
    extern Inverse_attribute *a_395Iaggregates;
    extern Inverse_attribute *a_396Iisaggregatedin;
}

#endif
