#ifndef  ENTITY_SDAIIFCAPPLIEDVALUE_H
#define  ENTITY_SDAIIFCAPPLIEDVALUE_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 SdaiIfcappliedvalue : public SDAI_Application_instance {
    protected:
        SDAI_String _name;    //  OPTIONAL
        SDAI_String _description;    //  OPTIONAL
        SdaiIfcappliedvalueselect _appliedvalue;    //  OPTIONAL
        SDAI_Application_instance_ptr _unitbasis = NULL;    //  OPTIONAL
        SDAI_String _applicabledate;    //  OPTIONAL
        SDAI_String _fixeduntildate;    //  OPTIONAL
        SDAI_String _category;    //  OPTIONAL
        SDAI_String _condition;    //  OPTIONAL
        SdaiIfcarithmeticoperatorenum_var _arithmeticoperator;    //  OPTIONAL
        EntityAggregate_ptr _components = NULL;    //  OPTIONAL          //  of  ifcappliedvalue

    public: 
        SdaiIfcappliedvalue();
        SdaiIfcappliedvalue( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcappliedvalue( SdaiIfcappliedvalue & e );
        ~SdaiIfcappliedvalue();
        int opcode() {
            return 270;
        }
  const SdaiIfclabel   name_() const;
        SdaiIfclabel   name_();
        void name_( const SdaiIfclabel x );

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

        SdaiIfcappliedvalueselect_ptr_c appliedvalue_() const;
        SdaiIfcappliedvalueselect_ptr   appliedvalue_();
        void appliedvalue_( const SdaiIfcappliedvalueselect_ptr x );

        SdaiIfcmeasurewithunit_ptr_c unitbasis_() const;
        SdaiIfcmeasurewithunit_ptr   unitbasis_();
        void unitbasis_( const SdaiIfcmeasurewithunit_ptr x );

  const SdaiIfcdate   applicabledate_() const;
        SdaiIfcdate   applicabledate_();
        void applicabledate_( const SdaiIfcdate x );

  const SdaiIfcdate   fixeduntildate_() const;
        SdaiIfcdate   fixeduntildate_();
        void fixeduntildate_( const SdaiIfcdate x );

  const SdaiIfclabel   category_() const;
        SdaiIfclabel   category_();
        void category_( const SdaiIfclabel x );

  const SdaiIfclabel   condition_() const;
        SdaiIfclabel   condition_();
        void condition_( const SdaiIfclabel x );

  const SdaiIfcarithmeticoperatorenum_var   arithmeticoperator_() const;
        SdaiIfcarithmeticoperatorenum_var   arithmeticoperator_();
        void arithmeticoperator_( const SdaiIfcarithmeticoperatorenum_var x );

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

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

};

inline SdaiIfcappliedvalue * create_SdaiIfcappliedvalue() {
    return new SdaiIfcappliedvalue;
}

void init_SdaiIfcappliedvalue(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcappliedvalue;
    extern AttrDescriptor *a_601name;
    extern AttrDescriptor *a_602description;
    extern AttrDescriptor *a_603appliedvalue;
    extern AttrDescriptor *a_604unitbasis;
    extern AttrDescriptor *a_605applicabledate;
    extern AttrDescriptor *a_606fixeduntildate;
    extern AttrDescriptor *a_607category;
    extern AttrDescriptor *a_608condition;
    extern AttrDescriptor *a_609arithmeticoperator;
    extern AttrDescriptor *a_610components;
    extern Inverse_attribute *a_611Ihasexternalreference;
}

#endif
