#ifndef  ENTITY_SDAIIFCGRIDAXIS_H
#define  ENTITY_SDAIIFCGRIDAXIS_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 SdaiIfcgridaxis : public SDAI_Application_instance {
    protected:
        SDAI_String _axistag;    //  OPTIONAL
        SDAI_Application_instance_ptr _axiscurve = NULL;
        SDAI_BOOLEAN _samesense = false;
    public: 
        SdaiIfcgridaxis();
        SdaiIfcgridaxis( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcgridaxis( SdaiIfcgridaxis & e );
        ~SdaiIfcgridaxis();
        int opcode() {
            return 409;
        }
  const SdaiIfclabel   axistag_() const;
        SdaiIfclabel   axistag_();
        void axistag_( const SdaiIfclabel x );

        SdaiIfccurve_ptr_c axiscurve_() const;
        SdaiIfccurve_ptr   axiscurve_();
        void axiscurve_( const SdaiIfccurve_ptr x );

        Boolean   samesense_() const;
        void samesense_( const Boolean x );

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

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

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

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

};

inline SdaiIfcgridaxis * create_SdaiIfcgridaxis() {
    return new SdaiIfcgridaxis;
}

void init_SdaiIfcgridaxis(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcgridaxis;
    extern AttrDescriptor *a_935axistag;
    extern AttrDescriptor *a_936axiscurve;
    extern AttrDescriptor *a_937samesense;
    extern Inverse_attribute *a_938Ipartofw;
    extern Inverse_attribute *a_939Ipartofv;
    extern Inverse_attribute *a_940Ipartofu;
    extern Inverse_attribute *a_941Ihasintersections;
}

#endif
