#ifndef  ENTITY_SDAIIFCSECTIONREINFORCEMENTPROPERTIES_H
#define  ENTITY_SDAIIFCSECTIONREINFORCEMENTPROPERTIES_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 SdaiIfcsectionreinforcementproperties : public SdaiIfcpredefinedproperties {
     protected:
        SDAI_Real _longitudinalstartposition = 0.0;
        SDAI_Real _longitudinalendposition = 0.0;
        SDAI_Real _transverseposition = 0.0;    //  OPTIONAL
        SdaiIfcreinforcingbarroleenum_var _reinforcementrole;
        SDAI_Application_instance_ptr _sectiondefinition = NULL;
        EntityAggregate_ptr _crosssectionreinforcementdefinitions = NULL;          //  of  ifcreinforcementbarproperties

    public: 
        SdaiIfcsectionreinforcementproperties();
        SdaiIfcsectionreinforcementproperties( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcsectionreinforcementproperties( SdaiIfcsectionreinforcementproperties & e );
        ~SdaiIfcsectionreinforcementproperties();
        int opcode() {
            return 720;
        }
        SdaiIfclengthmeasure   longitudinalstartposition_() const;
        void longitudinalstartposition_( const SdaiIfclengthmeasure x );

        SdaiIfclengthmeasure   longitudinalendposition_() const;
        void longitudinalendposition_( const SdaiIfclengthmeasure x );

        SdaiIfclengthmeasure   transverseposition_() const;
        void transverseposition_( const SdaiIfclengthmeasure x );

  const SdaiIfcreinforcingbarroleenum_var   reinforcementrole_() const;
        SdaiIfcreinforcingbarroleenum_var   reinforcementrole_();
        void reinforcementrole_( const SdaiIfcreinforcingbarroleenum_var x );

        SdaiIfcsectionproperties_ptr_c sectiondefinition_() const;
        SdaiIfcsectionproperties_ptr   sectiondefinition_();
        void sectiondefinition_( const SdaiIfcsectionproperties_ptr x );

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

};

inline SdaiIfcsectionreinforcementproperties * create_SdaiIfcsectionreinforcementproperties() {
    return new SdaiIfcsectionreinforcementproperties;
}

void init_SdaiIfcsectionreinforcementproperties(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcsectionreinforcementproperties;
    extern AttrDescriptor *a_1584longitudinalstartposition;
    extern AttrDescriptor *a_1585longitudinalendposition;
    extern AttrDescriptor *a_1586transverseposition;
    extern AttrDescriptor *a_1587reinforcementrole;
    extern AttrDescriptor *a_1588sectiondefinition;
    extern AttrDescriptor *a_1589crosssectionreinforcementdefinitions;
}

#endif
